mirror of
https://github.com/reactos/reactos.git
synced 2025-08-05 19:33:16 +00:00
Add small utility to download/install Firefox
svn path=/trunk/; revision=20096
This commit is contained in:
parent
32ae60b9b2
commit
507a9d518e
12 changed files with 508 additions and 1 deletions
|
@ -2,6 +2,9 @@
|
||||||
<directory name="net">
|
<directory name="net">
|
||||||
<xi:include href="net/directory.xml" />
|
<xi:include href="net/directory.xml" />
|
||||||
</directory>
|
</directory>
|
||||||
|
<directory name="getfirefox">
|
||||||
|
<xi:include href="getfirefox/getfirefox.xml" />
|
||||||
|
</directory>
|
||||||
<directory name="shutdown">
|
<directory name="shutdown">
|
||||||
<xi:include href="shutdown/shutdown.xml" />
|
<xi:include href="shutdown/shutdown.xml" />
|
||||||
</directory>
|
</directory>
|
||||||
|
|
44
reactos/apps/utils/getfirefox/En.rc
Normal file
44
reactos/apps/utils/getfirefox/En.rc
Normal file
|
@ -0,0 +1,44 @@
|
||||||
|
/*
|
||||||
|
* PROJECT: ReactOS utilities
|
||||||
|
* LICENSE: GPL - See COPYING in the top level directory
|
||||||
|
* FILE: apps/utils/getfirefox/En.rc
|
||||||
|
* PURPOSE: English resources
|
||||||
|
* COPYRIGHT: Copyright 2004 Mike McCormack for CodeWeavers
|
||||||
|
* Copyright 2005 Ge van Geldorp (gvg@reactos.org)
|
||||||
|
*/
|
||||||
|
/*
|
||||||
|
* Based on Wine dlls/shdocvw/En.rc
|
||||||
|
*
|
||||||
|
* This library is free software; you can redistribute it and/or
|
||||||
|
* modify it under the terms of the GNU Lesser General Public
|
||||||
|
* License as published by the Free Software Foundation; either
|
||||||
|
* version 2.1 of the License, or (at your option) any later version.
|
||||||
|
*
|
||||||
|
* This library is distributed in the hope that it will be useful,
|
||||||
|
* but WITHOUT ANY WARRANTY; without even the implied warranty of
|
||||||
|
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
|
||||||
|
* Lesser General Public License for more details.
|
||||||
|
*
|
||||||
|
* You should have received a copy of the GNU Lesser General Public
|
||||||
|
* License along with this library; if not, write to the Free Software
|
||||||
|
* Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA
|
||||||
|
*/
|
||||||
|
|
||||||
|
LANGUAGE LANG_ENGLISH, SUBLANG_DEFAULT
|
||||||
|
|
||||||
|
IDD_GETFIREFOX DIALOG LOADONCALL MOVEABLE DISCARDABLE 0, 0, 220, 76
|
||||||
|
STYLE DS_MODALFRAME | DS_CENTER | WS_VISIBLE | WS_POPUP | WS_CAPTION | WS_SYSMENU
|
||||||
|
CAPTION "Downloading Firefox"
|
||||||
|
FONT 8, "MS Shell Dlg"
|
||||||
|
{
|
||||||
|
CONTROL "Progress1",IDC_PROGRESS,"msctls_progress32",WS_BORDER|PBS_SMOOTH,10,10,200,12
|
||||||
|
LTEXT "", IDC_STATUS, 10, 30, 200, 10, SS_CENTER
|
||||||
|
CHECKBOX "Remove \"Get Firefox\" from Start Menu when done", IDC_REMOVE,
|
||||||
|
10, 44, 200, 10, BS_AUTOCHECKBOX | WS_GROUP | WS_TABSTOP
|
||||||
|
PUSHBUTTON "Cancel", IDCANCEL, 85, 58, 50, 15, WS_GROUP | WS_TABSTOP
|
||||||
|
}
|
||||||
|
|
||||||
|
STRINGTABLE
|
||||||
|
BEGIN
|
||||||
|
IDS_START_MENU_NAME "Get Firefox"
|
||||||
|
END
|
BIN
reactos/apps/utils/getfirefox/firefox.ico
Executable file
BIN
reactos/apps/utils/getfirefox/firefox.ico
Executable file
Binary file not shown.
After Width: | Height: | Size: 22 KiB |
378
reactos/apps/utils/getfirefox/getfirefox.c
Normal file
378
reactos/apps/utils/getfirefox/getfirefox.c
Normal file
|
@ -0,0 +1,378 @@
|
||||||
|
/*
|
||||||
|
* PROJECT: ReactOS utilities
|
||||||
|
* LICENSE: GPL - See COPYING in the top level directory
|
||||||
|
* FILE: apps/utils/getfirefox/getfirefox.c
|
||||||
|
* PURPOSE: Main program
|
||||||
|
* COPYRIGHT: Copyright 2001 John R. Sheets (for CodeWeavers)
|
||||||
|
* Copyright 2004 Mike McCormack (for CodeWeavers)
|
||||||
|
* Copyright 2005 Ge van Geldorp (gvg@reactos.org)
|
||||||
|
*/
|
||||||
|
/*
|
||||||
|
* Based on Wine dlls/shdocvw/shdocvw_main.c
|
||||||
|
*
|
||||||
|
* This library is free software; you can redistribute it and/or
|
||||||
|
* modify it under the terms of the GNU Lesser General Public
|
||||||
|
* License as published by the Free Software Foundation; either
|
||||||
|
* version 2.1 of the License, or (at your option) any later version.
|
||||||
|
*
|
||||||
|
* This library is distributed in the hope that it will be useful,
|
||||||
|
* but WITHOUT ANY WARRANTY; without even the implied warranty of
|
||||||
|
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
|
||||||
|
* Lesser General Public License for more details.
|
||||||
|
*
|
||||||
|
* You should have received a copy of the GNU Lesser General Public
|
||||||
|
* License along with this library; if not, write to the Free Software
|
||||||
|
* Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA
|
||||||
|
*/
|
||||||
|
|
||||||
|
|
||||||
|
#include <precomp.h>
|
||||||
|
|
||||||
|
#define NDEBUG
|
||||||
|
#include <debug.h>
|
||||||
|
|
||||||
|
#define DOWNLOAD_URL L"http://links.reactos.org/getfirefox"
|
||||||
|
|
||||||
|
typedef struct _IBindStatusCallbackImpl
|
||||||
|
{
|
||||||
|
const IBindStatusCallbackVtbl *vtbl;
|
||||||
|
LONG ref;
|
||||||
|
HWND hDialog;
|
||||||
|
BOOL *pbCancelled;
|
||||||
|
} IBindStatusCallbackImpl;
|
||||||
|
|
||||||
|
static HRESULT WINAPI
|
||||||
|
dlQueryInterface(IBindStatusCallback* This, REFIID riid, void** ppvObject)
|
||||||
|
{
|
||||||
|
if (NULL == ppvObject)
|
||||||
|
{
|
||||||
|
return E_POINTER;
|
||||||
|
}
|
||||||
|
|
||||||
|
if (IsEqualIID(riid, &IID_IUnknown) ||
|
||||||
|
IsEqualIID(riid, &IID_IBindStatusCallback))
|
||||||
|
{
|
||||||
|
IBindStatusCallback_AddRef( This );
|
||||||
|
*ppvObject = This;
|
||||||
|
return S_OK;
|
||||||
|
}
|
||||||
|
|
||||||
|
return E_NOINTERFACE;
|
||||||
|
}
|
||||||
|
|
||||||
|
static ULONG WINAPI
|
||||||
|
dlAddRef(IBindStatusCallback* iface)
|
||||||
|
{
|
||||||
|
IBindStatusCallbackImpl *This = (IBindStatusCallbackImpl *) iface;
|
||||||
|
|
||||||
|
return InterlockedIncrement(&This->ref);
|
||||||
|
}
|
||||||
|
|
||||||
|
static ULONG WINAPI
|
||||||
|
dlRelease(IBindStatusCallback* iface)
|
||||||
|
{
|
||||||
|
IBindStatusCallbackImpl *This = (IBindStatusCallbackImpl *) iface;
|
||||||
|
DWORD ref = InterlockedDecrement(&This->ref);
|
||||||
|
|
||||||
|
if( !ref )
|
||||||
|
{
|
||||||
|
DestroyWindow( This->hDialog );
|
||||||
|
HeapFree(GetProcessHeap(), 0, This);
|
||||||
|
}
|
||||||
|
|
||||||
|
return ref;
|
||||||
|
}
|
||||||
|
|
||||||
|
static HRESULT WINAPI
|
||||||
|
dlOnStartBinding(IBindStatusCallback* iface, DWORD dwReserved, IBinding* pib)
|
||||||
|
{
|
||||||
|
DPRINT1("OnStartBinding not implemented\n");
|
||||||
|
|
||||||
|
return S_OK;
|
||||||
|
}
|
||||||
|
|
||||||
|
static HRESULT WINAPI
|
||||||
|
dlGetPriority(IBindStatusCallback* iface, LONG* pnPriority)
|
||||||
|
{
|
||||||
|
DPRINT1("GetPriority not implemented\n");
|
||||||
|
|
||||||
|
return S_OK;
|
||||||
|
}
|
||||||
|
|
||||||
|
static HRESULT WINAPI
|
||||||
|
dlOnLowResource( IBindStatusCallback* iface, DWORD reserved)
|
||||||
|
{
|
||||||
|
DPRINT1("OnLowResource not implemented\n");
|
||||||
|
|
||||||
|
return S_OK;
|
||||||
|
}
|
||||||
|
|
||||||
|
static HRESULT WINAPI
|
||||||
|
dlOnProgress(IBindStatusCallback* iface, ULONG ulProgress,
|
||||||
|
ULONG ulProgressMax, ULONG ulStatusCode, LPCWSTR szStatusText)
|
||||||
|
{
|
||||||
|
IBindStatusCallbackImpl *This = (IBindStatusCallbackImpl *) iface;
|
||||||
|
HWND Item;
|
||||||
|
LONG r;
|
||||||
|
WCHAR OldText[100];
|
||||||
|
|
||||||
|
Item = GetDlgItem(This->hDialog, IDC_PROGRESS);
|
||||||
|
if (NULL != Item && 0 != ulProgressMax)
|
||||||
|
{
|
||||||
|
SendMessageW(Item, PBM_SETPOS, (ulProgress * 100) / ulProgressMax, 0);
|
||||||
|
}
|
||||||
|
|
||||||
|
Item = GetDlgItem(This->hDialog, IDC_STATUS);
|
||||||
|
if (NULL != Item)
|
||||||
|
{
|
||||||
|
SendMessageW(Item, WM_GETTEXT, sizeof(OldText) / sizeof(OldText[0]),
|
||||||
|
(LPARAM) OldText);
|
||||||
|
if (sizeof(OldText) / sizeof(OldText[0]) - 1 <= wcslen(OldText) ||
|
||||||
|
0 != wcscmp(OldText, szStatusText))
|
||||||
|
{
|
||||||
|
SendMessageW(Item, WM_SETTEXT, 0, (LPARAM) szStatusText);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
SetLastError(0);
|
||||||
|
r = GetWindowLongPtrW(This->hDialog, GWLP_USERDATA);
|
||||||
|
if (0 != r || 0 != GetLastError())
|
||||||
|
{
|
||||||
|
*This->pbCancelled = TRUE;
|
||||||
|
DPRINT("Cancelled\n");
|
||||||
|
return E_ABORT;
|
||||||
|
}
|
||||||
|
|
||||||
|
return S_OK;
|
||||||
|
}
|
||||||
|
|
||||||
|
static HRESULT WINAPI
|
||||||
|
dlOnStopBinding(IBindStatusCallback* iface, HRESULT hresult, LPCWSTR szError)
|
||||||
|
{
|
||||||
|
DPRINT1("OnStopBinding not implemented\n");
|
||||||
|
|
||||||
|
return S_OK;
|
||||||
|
}
|
||||||
|
|
||||||
|
static HRESULT WINAPI
|
||||||
|
dlGetBindInfo(IBindStatusCallback* iface, DWORD* grfBINDF, BINDINFO* pbindinfo)
|
||||||
|
{
|
||||||
|
DPRINT1("GetBindInfo not implemented\n");
|
||||||
|
|
||||||
|
return S_OK;
|
||||||
|
}
|
||||||
|
|
||||||
|
static HRESULT WINAPI
|
||||||
|
dlOnDataAvailable(IBindStatusCallback* iface, DWORD grfBSCF,
|
||||||
|
DWORD dwSize, FORMATETC* pformatetc, STGMEDIUM* pstgmed)
|
||||||
|
{
|
||||||
|
DPRINT1("OnDataAvailable implemented\n");
|
||||||
|
|
||||||
|
return S_OK;
|
||||||
|
}
|
||||||
|
|
||||||
|
static HRESULT WINAPI
|
||||||
|
dlOnObjectAvailable(IBindStatusCallback* iface, REFIID riid, IUnknown* punk)
|
||||||
|
{
|
||||||
|
DPRINT1("OnObjectAvailable implemented\n");
|
||||||
|
|
||||||
|
return S_OK;
|
||||||
|
}
|
||||||
|
|
||||||
|
static const IBindStatusCallbackVtbl dlVtbl =
|
||||||
|
{
|
||||||
|
dlQueryInterface,
|
||||||
|
dlAddRef,
|
||||||
|
dlRelease,
|
||||||
|
dlOnStartBinding,
|
||||||
|
dlGetPriority,
|
||||||
|
dlOnLowResource,
|
||||||
|
dlOnProgress,
|
||||||
|
dlOnStopBinding,
|
||||||
|
dlGetBindInfo,
|
||||||
|
dlOnDataAvailable,
|
||||||
|
dlOnObjectAvailable
|
||||||
|
};
|
||||||
|
|
||||||
|
static IBindStatusCallback*
|
||||||
|
CreateDl(HWND Dlg, BOOL *pbCancelled)
|
||||||
|
{
|
||||||
|
IBindStatusCallbackImpl *This;
|
||||||
|
|
||||||
|
This = HeapAlloc(GetProcessHeap(), 0, sizeof(IBindStatusCallbackImpl));
|
||||||
|
This->vtbl = &dlVtbl;
|
||||||
|
This->ref = 1;
|
||||||
|
This->hDialog = Dlg;
|
||||||
|
This->pbCancelled = pbCancelled;
|
||||||
|
|
||||||
|
return (IBindStatusCallback*) This;
|
||||||
|
}
|
||||||
|
|
||||||
|
static BOOL
|
||||||
|
GetShortcutName(LPWSTR ShortcutName)
|
||||||
|
{
|
||||||
|
if (! SHGetSpecialFolderPathW(0, ShortcutName, CSIDL_PROGRAMS, FALSE))
|
||||||
|
{
|
||||||
|
return FALSE;
|
||||||
|
}
|
||||||
|
if (NULL == PathAddBackslashW(ShortcutName))
|
||||||
|
{
|
||||||
|
return FALSE;
|
||||||
|
}
|
||||||
|
if (0 == LoadStringW(GetModuleHandle(NULL), IDS_START_MENU_NAME,
|
||||||
|
ShortcutName + wcslen(ShortcutName),
|
||||||
|
MAX_PATH - wcslen(ShortcutName)))
|
||||||
|
{
|
||||||
|
return FALSE;
|
||||||
|
}
|
||||||
|
if (MAX_PATH - 5 < wcslen(ShortcutName))
|
||||||
|
{
|
||||||
|
return FALSE;
|
||||||
|
}
|
||||||
|
wcscat(ShortcutName, L".lnk");
|
||||||
|
|
||||||
|
return TRUE;
|
||||||
|
}
|
||||||
|
|
||||||
|
static DWORD WINAPI
|
||||||
|
ThreadFunc(LPVOID Context)
|
||||||
|
{
|
||||||
|
static const WCHAR szUrl[] = DOWNLOAD_URL;
|
||||||
|
IBindStatusCallback *dl;
|
||||||
|
WCHAR path[MAX_PATH], ShortcutName[MAX_PATH];
|
||||||
|
LPWSTR p;
|
||||||
|
STARTUPINFOW si;
|
||||||
|
PROCESS_INFORMATION pi;
|
||||||
|
HWND Dlg = (HWND) Context;
|
||||||
|
DWORD r;
|
||||||
|
BOOL bCancelled = FALSE;
|
||||||
|
BOOL bTempfile = FALSE;
|
||||||
|
|
||||||
|
/* built the path for the download */
|
||||||
|
p = wcsrchr(szUrl, L'/');
|
||||||
|
if (NULL == p)
|
||||||
|
{
|
||||||
|
goto end;
|
||||||
|
}
|
||||||
|
if (! GetTempPathW(MAX_PATH, path))
|
||||||
|
{
|
||||||
|
goto end;
|
||||||
|
}
|
||||||
|
wcscat(path, p + 1);
|
||||||
|
|
||||||
|
/* download it */
|
||||||
|
bTempfile = TRUE;
|
||||||
|
dl = CreateDl(Context, &bCancelled);
|
||||||
|
r = URLDownloadToFileW(NULL, szUrl, path, 0, dl);
|
||||||
|
if (NULL != dl)
|
||||||
|
{
|
||||||
|
IBindStatusCallback_Release(dl);
|
||||||
|
}
|
||||||
|
if (S_OK != r || bCancelled )
|
||||||
|
{
|
||||||
|
goto end;
|
||||||
|
}
|
||||||
|
ShowWindow(Dlg, SW_HIDE);
|
||||||
|
|
||||||
|
/* run it */
|
||||||
|
memset(&si, 0, sizeof(si));
|
||||||
|
si.cb = sizeof(si);
|
||||||
|
r = CreateProcessW(path, NULL, NULL, NULL, 0, 0, NULL, NULL, &si, &pi);
|
||||||
|
if (0 == r)
|
||||||
|
{
|
||||||
|
goto end;
|
||||||
|
}
|
||||||
|
CloseHandle(pi.hThread);
|
||||||
|
WaitForSingleObject(pi.hProcess, INFINITE);
|
||||||
|
CloseHandle(pi.hProcess);
|
||||||
|
|
||||||
|
if (BST_CHECKED == SendMessageW(GetDlgItem(Dlg, IDC_REMOVE), BM_GETCHECK,
|
||||||
|
0, 0) &&
|
||||||
|
GetShortcutName(ShortcutName))
|
||||||
|
{
|
||||||
|
DeleteFileW(ShortcutName);
|
||||||
|
}
|
||||||
|
|
||||||
|
end:
|
||||||
|
if (bTempfile)
|
||||||
|
{
|
||||||
|
DeleteFileW(path);
|
||||||
|
}
|
||||||
|
EndDialog(Dlg, 0);
|
||||||
|
return 0;
|
||||||
|
}
|
||||||
|
|
||||||
|
static INT_PTR CALLBACK
|
||||||
|
dlProc(HWND Dlg, UINT Msg, WPARAM wParam, LPARAM lParam)
|
||||||
|
{
|
||||||
|
HANDLE Thread;
|
||||||
|
DWORD ThreadId;
|
||||||
|
HWND Item;
|
||||||
|
HICON Icon;
|
||||||
|
WCHAR ShortcutName[MAX_PATH];
|
||||||
|
|
||||||
|
switch (Msg)
|
||||||
|
{
|
||||||
|
case WM_INITDIALOG:
|
||||||
|
Icon = LoadIconW((HINSTANCE) GetWindowLongPtr(Dlg, GWLP_HINSTANCE),
|
||||||
|
MAKEINTRESOURCEW(IDI_ICON_MAIN));
|
||||||
|
if (NULL != Icon)
|
||||||
|
{
|
||||||
|
SendMessageW(Dlg, WM_SETICON, ICON_BIG, (LPARAM) Icon);
|
||||||
|
SendMessageW(Dlg, WM_SETICON, ICON_SMALL, (LPARAM) Icon);
|
||||||
|
}
|
||||||
|
SetWindowLongPtrW(Dlg, GWLP_USERDATA, 0);
|
||||||
|
Item = GetDlgItem(Dlg, IDC_PROGRESS);
|
||||||
|
if (NULL != Item)
|
||||||
|
{
|
||||||
|
SendMessageW(Item, PBM_SETRANGE, 0, MAKELPARAM(0,100));
|
||||||
|
SendMessageW(Item, PBM_SETPOS, 0, 0);
|
||||||
|
}
|
||||||
|
Item = GetDlgItem(Dlg, IDC_REMOVE);
|
||||||
|
if (NULL != Item)
|
||||||
|
{
|
||||||
|
if (GetShortcutName(ShortcutName) &&
|
||||||
|
INVALID_FILE_ATTRIBUTES != GetFileAttributesW(ShortcutName))
|
||||||
|
{
|
||||||
|
SendMessageW(Item, BM_SETCHECK, BST_CHECKED, 0);
|
||||||
|
}
|
||||||
|
else
|
||||||
|
{
|
||||||
|
SendMessageW(Item, BM_SETCHECK, BST_UNCHECKED, 0);
|
||||||
|
ShowWindow(Item, SW_HIDE);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
Thread = CreateThread(NULL, 0, ThreadFunc, Dlg, 0, &ThreadId);
|
||||||
|
if (NULL == Thread)
|
||||||
|
{
|
||||||
|
return FALSE;
|
||||||
|
}
|
||||||
|
CloseHandle(Thread);
|
||||||
|
return TRUE;
|
||||||
|
|
||||||
|
case WM_COMMAND:
|
||||||
|
if (wParam == IDCANCEL)
|
||||||
|
{
|
||||||
|
SetWindowLongPtrW(Dlg, GWLP_USERDATA, 1);
|
||||||
|
}
|
||||||
|
return FALSE;
|
||||||
|
|
||||||
|
default:
|
||||||
|
return FALSE;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
/***********************************************************************
|
||||||
|
* Main program
|
||||||
|
*/
|
||||||
|
int
|
||||||
|
main(int argc, char *argv[])
|
||||||
|
{
|
||||||
|
InitCommonControls();
|
||||||
|
|
||||||
|
DialogBoxW(GetModuleHandle(NULL), MAKEINTRESOURCEW(IDD_GETFIREFOX), 0,
|
||||||
|
dlProc);
|
||||||
|
|
||||||
|
return 0;
|
||||||
|
}
|
25
reactos/apps/utils/getfirefox/getfirefox.rc
Normal file
25
reactos/apps/utils/getfirefox/getfirefox.rc
Normal file
|
@ -0,0 +1,25 @@
|
||||||
|
/*
|
||||||
|
* PROJECT: ReactOS utilities
|
||||||
|
* LICENSE: GPL - See COPYING in the top level directory
|
||||||
|
* FILE: apps/utils/getfirefox/getfirefox.rc
|
||||||
|
* PURPOSE: Language-independent resources
|
||||||
|
* COPYRIGHT: Copyright 2005 Ge van Geldorp (gvg@reactos.org)
|
||||||
|
*/
|
||||||
|
|
||||||
|
#include <windows.h>
|
||||||
|
#include "resource.h"
|
||||||
|
|
||||||
|
#define REACTOS_STR_FILE_DESCRIPTION "Firefox downloader\0"
|
||||||
|
#define REACTOS_STR_INTERNAL_NAME "getfirefox\0"
|
||||||
|
#define REACTOS_STR_ORIGINAL_FILENAME "getfirefox.exe\0"
|
||||||
|
#include <reactos/version.rc>
|
||||||
|
|
||||||
|
/*
|
||||||
|
* Note: this icon is the "default logo" referenced here:
|
||||||
|
* http://www.mozilla.org/foundation/trademarks/faq.html (under "What are the
|
||||||
|
* Mozilla Trademarks and Logos?"). Don't use the official Firefox logo as it
|
||||||
|
* is trademarked.
|
||||||
|
*/
|
||||||
|
1 ICON "firefox.ico"
|
||||||
|
|
||||||
|
#include "En.rc"
|
17
reactos/apps/utils/getfirefox/getfirefox.xml
Normal file
17
reactos/apps/utils/getfirefox/getfirefox.xml
Normal file
|
@ -0,0 +1,17 @@
|
||||||
|
<module name="getfirefox" type="win32gui" installbase="system32" installname="getfirefox.exe">
|
||||||
|
<include base="getfirefox">.</include>
|
||||||
|
<define name="UNICODE" />
|
||||||
|
<define name="_UNICODE" />
|
||||||
|
<define name="__USE_W32API" />
|
||||||
|
<define name="WINVER">0x0501</define>
|
||||||
|
<define name="_WIN32_IE>0x0600</define>
|
||||||
|
<library>comctl32</library>
|
||||||
|
<library>ntdll</library>
|
||||||
|
<library>shell32</library>
|
||||||
|
<library>shlwapi</library>
|
||||||
|
<library>urlmon</library>
|
||||||
|
<library>uuid</library>
|
||||||
|
<pch>precomp.h</pch>
|
||||||
|
<file>getfirefox.c</file>
|
||||||
|
<file>getfirefox.rc</file>
|
||||||
|
</module>
|
19
reactos/apps/utils/getfirefox/precomp.h
Normal file
19
reactos/apps/utils/getfirefox/precomp.h
Normal file
|
@ -0,0 +1,19 @@
|
||||||
|
/*
|
||||||
|
* PROJECT: ReactOS utilities
|
||||||
|
* LICENSE: GPL - See COPYING in the top level directory
|
||||||
|
* FILE: apps/utils/getfirefox/precomp.h
|
||||||
|
* PURPOSE: Precompiled header file
|
||||||
|
* COPYRIGHT: Copyright 2005 Ge van Geldorp (gvg@reactos.org)
|
||||||
|
*/
|
||||||
|
|
||||||
|
#define COBJMACROS
|
||||||
|
#define NTOS_MODE_USER
|
||||||
|
#define WIN32_NO_STATUS
|
||||||
|
#include <windows.h>
|
||||||
|
#include <ndk/ntndk.h>
|
||||||
|
#include <commctrl.h>
|
||||||
|
#include <shlobj.h>
|
||||||
|
#include <shlwapi.h>
|
||||||
|
#include <urlmon.h>
|
||||||
|
|
||||||
|
#include "resource.h"
|
17
reactos/apps/utils/getfirefox/resource.h
Normal file
17
reactos/apps/utils/getfirefox/resource.h
Normal file
|
@ -0,0 +1,17 @@
|
||||||
|
/*
|
||||||
|
* PROJECT: ReactOS utilities
|
||||||
|
* LICENSE: GPL - See COPYING in the top level directory
|
||||||
|
* FILE: apps/utils/getfirefox/resource.h
|
||||||
|
* PURPOSE: Resource constants
|
||||||
|
* COPYRIGHT: Copyright 2005 Ge van Geldorp (gvg@reactos.org)
|
||||||
|
*/
|
||||||
|
|
||||||
|
#define IDI_ICON_MAIN 1
|
||||||
|
|
||||||
|
#define IDD_GETFIREFOX 100
|
||||||
|
|
||||||
|
#define IDC_PROGRESS 1000
|
||||||
|
#define IDC_STATUS 1001
|
||||||
|
#define IDC_REMOVE 1002
|
||||||
|
|
||||||
|
#define IDS_START_MENU_NAME 1100
|
|
@ -227,6 +227,7 @@ apps\utils\net\whois\whois.exe 1
|
||||||
apps\utils\ps\ps.exe 1
|
apps\utils\ps\ps.exe 1
|
||||||
apps\utils\rosperf\rosperf.exe 1
|
apps\utils\rosperf\rosperf.exe 1
|
||||||
apps\utils\shutdown\shutdown.exe 1
|
apps\utils\shutdown\shutdown.exe 1
|
||||||
|
apps\utils\getfirefox\getfirefox.exe 1
|
||||||
media\fonts\c0419bt_.ttf 3
|
media\fonts\c0419bt_.ttf 3
|
||||||
media\fonts\c0582bt_.ttf 3
|
media\fonts\c0582bt_.ttf 3
|
||||||
media\fonts\c0583bt_.ttf 3
|
media\fonts\c0583bt_.ttf 3
|
||||||
|
|
|
@ -415,6 +415,7 @@ InstallReactOS (HINSTANCE hInstance)
|
||||||
/* create program startmenu shortcuts */
|
/* create program startmenu shortcuts */
|
||||||
CreateShortcut(CSIDL_PROGRAMS, NULL, _T("winefile.lnk"), _T("winefile.exe"), IDS_CMT_WINEFILE);
|
CreateShortcut(CSIDL_PROGRAMS, NULL, _T("winefile.lnk"), _T("winefile.exe"), IDS_CMT_WINEFILE);
|
||||||
CreateShortcut(CSIDL_PROGRAMS, NULL, _T("ibrowser.lnk"), _T("ibrowser.exe"), IDS_CMT_IBROWSER);
|
CreateShortcut(CSIDL_PROGRAMS, NULL, _T("ibrowser.lnk"), _T("ibrowser.exe"), IDS_CMT_IBROWSER);
|
||||||
|
CreateShortcut(CSIDL_PROGRAMS, NULL, _T("Get Firefox.lnk"), _T("getfirefox.exe"), IDS_CMT_GETFIREFOX);
|
||||||
|
|
||||||
/* create and fill Accessories subfolder */
|
/* create and fill Accessories subfolder */
|
||||||
if (CreateShortcutFolder(CSIDL_PROGRAMS, IDS_ACCESSORIES, sAccessories, 256)) {
|
if (CreateShortcutFolder(CSIDL_PROGRAMS, IDS_ACCESSORIES, sAccessories, 256)) {
|
||||||
|
|
|
@ -96,6 +96,7 @@
|
||||||
#define IDS_CMT_SOLITAIRE 3216
|
#define IDS_CMT_SOLITAIRE 3216
|
||||||
#define IDS_CMT_WINEMINE 3217
|
#define IDS_CMT_WINEMINE 3217
|
||||||
#define IDS_CMT_IBROWSER 3218
|
#define IDS_CMT_IBROWSER 3218
|
||||||
|
#define IDS_CMT_GETFIREFOX 3219
|
||||||
|
|
||||||
#define IDS_REACTOS_SETUP 3300
|
#define IDS_REACTOS_SETUP 3300
|
||||||
#define IDS_UNKNOWN_ERROR 3301
|
#define IDS_UNKNOWN_ERROR 3301
|
||||||
|
|
|
@ -183,7 +183,8 @@ END
|
||||||
STRINGTABLE
|
STRINGTABLE
|
||||||
BEGIN
|
BEGIN
|
||||||
IDS_CMT_WINEFILE "Launch Winefile"
|
IDS_CMT_WINEFILE "Launch Winefile"
|
||||||
IDS_CMT_IBROWSER "Launch iBrowser"
|
IDS_CMT_IBROWSER "Launch iBrowser"
|
||||||
|
IDS_CMT_GETFIREFOX "Download/install Firefox"
|
||||||
END
|
END
|
||||||
|
|
||||||
STRINGTABLE
|
STRINGTABLE
|
||||||
|
|
Loading…
Add table
Add a link
Reference in a new issue