/* INCLUDES *****************************************************************/
-#include <ntos.h>
+#define WIN32_NO_STATUS
#include <windows.h>
+#define NTOS_MODE_USER
+#include <ndk/ntndk.h>
+
#include <commctrl.h>
#include <stdio.h>
+#include <io.h>
#include <tchar.h>
#include <stdlib.h>
-#include <samlib.h>
-#include <syssetup.h>
+#include <samlib/samlib.h>
+#include <syssetup/syssetup.h>
#include <userenv.h>
#include <setupapi.h>
{
PROCESS_INFORMATION ProcInfo;
STARTUPINFO si;
+ WCHAR InstallName[] = L"vmwinst.exe";
ZeroMemory(&si, sizeof(STARTUPINFO));
si.cb = sizeof(STARTUPINFO);
- if(CreateProcess(NULL, _T("vmwinst.exe"), NULL, NULL, TRUE, NORMAL_PRIORITY_CLASS,
+ if(CreateProcess(NULL, InstallName, NULL, NULL, TRUE, NORMAL_PRIORITY_CLASS,
NULL, NULL, &si, &ProcInfo))
{
WaitForSingleObject(ProcInfo.hProcess, INFINITE);
}
-static VOID
-CreateCmdLink(VOID)
+static BOOL
+CreateShortcut(int csidl, LPCTSTR folder, LPCTSTR linkName, LPCTSTR command, UINT nIdTitle)
+{
+ TCHAR path[MAX_PATH];
+ TCHAR title[256];
+ LPTSTR p = path;
+
+ if (!SHGetSpecialFolderPath(0, path, csidl, TRUE))
+ return FALSE;
+
+ if (folder)
+ {
+ p = PathAddBackslash(p);
+ _tcscpy(p, folder);
+ }
+
+ p = PathAddBackslash(p);
+ _tcscpy(p, linkName);
+
+ if (!LoadString(hDllInstance, nIdTitle, title, 256))
+ return FALSE;
+
+ return SUCCEEDED(CreateShellLink(path, command, _T(""), NULL, NULL, 0, title));
+}
+
+
+static BOOL
+CreateShortcutFolder(int csidl, UINT nID, LPTSTR name, int nameLen)
{
TCHAR path[MAX_PATH];
LPTSTR p;
- CoInitialize(NULL);
+ if (!SHGetSpecialFolderPath(0, path, csidl, TRUE))
+ return FALSE;
- SHGetSpecialFolderPath(0, path, CSIDL_DESKTOP, TRUE);
- p = PathAddBackslash(path);
+ if (!LoadString(hDllInstance, nID, name, nameLen))
+ return FALSE;
- _tcscpy(p, _T("Command Prompt.lnk"));
- CreateShellLink(path, _T("cmd.exe"), _T(""), NULL, NULL, 0, _T("Open command prompt"));
+ p = PathAddBackslash(path);
+ _tcscpy(p, name);
- CoUninitialize();
+ return CreateDirectory(path, NULL) || GetLastError()==ERROR_ALREADY_EXISTS;
}
case WM_INITDIALOG:
SendDlgItemMessage(hWnd, IDC_RESTART_PROGRESS, PBM_SETRANGE, 0,
MAKELPARAM(0, 300));
- SetTimer(hWnd, 0, 50, NULL);
+ SetTimer(hWnd, 1, 50, NULL);
return TRUE;
case WM_TIMER:
DWORD STDCALL
InstallReactOS (HINSTANCE hInstance)
{
+ TCHAR sAccessories[256];
+ TCHAR sGames[256];
+ TCHAR Sys[_MAX_PATH];
+
+
# if 0
OutputDebugStringA ("InstallReactOS() called\n");
return 0;
}
- CreateCmdLink();
+ CoInitialize(NULL);
+
+ /* create desktop shortcuts */
+ CreateShortcut(CSIDL_DESKTOP, NULL, _T("Command Prompt.lnk"), _T("cmd.exe"), IDS_CMT_CMD);
+
+ /* create program startmenu shortcuts */
+ CreateShortcut(CSIDL_PROGRAMS, NULL, _T("winefile.lnk"), _T("winefile.exe"), IDS_CMT_WINEFILE);
+
+ /* create and fill Accessories subfolder */
+ if (CreateShortcutFolder(CSIDL_PROGRAMS, IDS_ACCESSORIES, sAccessories, 256)) {
+ CreateShortcut(CSIDL_PROGRAMS, sAccessories, _T("Command Prompt.lnk"), _T("cmd.exe"), IDS_CMT_CMD);
+ CreateShortcut(CSIDL_PROGRAMS, sAccessories, _T("notepad.lnk"), _T("notepad.exe"), IDS_CMT_NOTEPAD);
+ CreateShortcut(CSIDL_PROGRAMS, sAccessories, _T("explorer.lnk"), _T("explorer.exe"), IDS_CMT_EXPLORER);
+ CreateShortcut(CSIDL_PROGRAMS, sAccessories, _T("regedit.lnk"), _T("regedit.exe"), IDS_CMT_REGEDIT);
+ }
+
+ if(!GetSystemDirectory(Sys, _MAX_PATH))
+ Sys[0] = L'\0';
+
+ /* create Games subfolder and fill if the exe is available */
+ if (CreateShortcutFolder(CSIDL_PROGRAMS, IDS_GAMES, sGames, 256)) {
+ if (Sys[0] != L'\0') {
+ if((_taccess(_tcscat(Sys, _T("\\sol.exe")), 0 )) != -1)
+ CreateShortcut(CSIDL_PROGRAMS, sGames, _T("Solitaire.lnk"), _T("sol.exe"), IDS_CMT_SOLITAIRE);
+
+ /* winemine etc .... */
+ }
+ }
+
+ CoUninitialize();
/* Create the semi-random Domain-SID */
CreateRandomSid (&DomainSid);