Skip to content

Commit 3168cc6

Browse files
authored
Merge 28e9fb7 into 16de25a
2 parents 16de25a + 28e9fb7 commit 3168cc6

File tree

6 files changed

+16
-143
lines changed

6 files changed

+16
-143
lines changed

Src/Setup/Setup.cpp

Lines changed: 0 additions & 92 deletions
Original file line numberDiff line numberDiff line change
@@ -16,7 +16,6 @@
1616
// It unpacks the right installer into the temp directory and executes it.
1717

1818
typedef BOOL (WINAPI *FIsWow64Process)( HANDLE hProcess, PBOOL Wow64Process );
19-
typedef BOOL (WINAPI *FQueryFullProcessImageName)( HANDLE hProcess, DWORD dwFlags, LPTSTR lpExeName, PDWORD lpdwSize );
2019

2120

2221

@@ -199,32 +198,8 @@ static int ExtractMsi( HINSTANCE hInstance, const wchar_t *msiName, bool b64, bo
199198
return 0;
200199
}
201200

202-
INT_PTR CALLBACK DialogProc( HWND hwndDlg, UINT uMsg, WPARAM wParam, LPARAM lParam )
203-
{
204-
if (uMsg==WM_COMMAND && wParam==IDOK)
205-
{
206-
wchar_t text[256];
207-
GetDlgItemText(hwndDlg,IDC_EDITPWD,text,_countof(text));
208-
CharUpper(text);
209-
if (CalcFNVHash(text)==0xdd7faf06)
210-
EndDialog(hwndDlg,IDOK);
211-
else
212-
MessageBox(hwndDlg,L"Wrong password.",L"Error",MB_OK|MB_ICONERROR);
213-
return TRUE;
214-
}
215-
if (uMsg==WM_COMMAND && wParam==IDCANCEL)
216-
{
217-
EndDialog(hwndDlg,IDCANCEL);
218-
return TRUE;
219-
}
220-
return FALSE;
221-
}
222-
223201
int APIENTRY wWinMain( HINSTANCE hInstance, HINSTANCE hPrevInstance, LPTSTR lpCmdLine, int nCmdShow )
224202
{
225-
INITCOMMONCONTROLSEX init={sizeof(init),ICC_STANDARD_CLASSES};
226-
InitCommonControlsEx(&init);
227-
228203
// get installer version
229204
VS_FIXEDFILEINFO *pVer=NULL;
230205
{
@@ -239,9 +214,6 @@ int APIENTRY wWinMain( HINSTANCE hInstance, HINSTANCE hPrevInstance, LPTSTR lpCm
239214
pVer=(VS_FIXEDFILEINFO*)((char*)pRes+40);
240215
}
241216

242-
if (pVer && pVer->dwProductVersionMS==0x20008 && pVer->dwProductVersionLS==0 && DialogBox(hInstance,MAKEINTRESOURCE(IDD_DIALOGPWD),NULL,DialogProc)!=IDOK)
243-
return 0;
244-
245217
int count;
246218
wchar_t *const *params=CommandLineToArgvW(lpCmdLine,&count);
247219
if (!params) count=0;
@@ -326,70 +298,6 @@ int APIENTRY wWinMain( HINSTANCE hInstance, HINSTANCE hPrevInstance, LPTSTR lpCm
326298
BOOL b64=FALSE;
327299
isWow64Process(GetCurrentProcess(),&b64);
328300

329-
// look for an old version of the classic start menu (2.0.0 or older) and show a warning if it is still running. the uninstaller for such old versions doesn't close the start menu
330-
HWND hwnd=FindWindow(L"ClassicStartMenu.CStartHookWindow",L"StartHookWindow");
331-
if (hwnd)
332-
{
333-
bool bStartMenu=false;
334-
335-
DWORD id;
336-
GetWindowThreadProcessId(hwnd,&id);
337-
HANDLE process=OpenProcess(PROCESS_QUERY_INFORMATION|PROCESS_VM_READ,FALSE,id);
338-
if (process)
339-
{
340-
bStartMenu=true;
341-
wchar_t path[_MAX_PATH];
342-
DWORD size=_countof(path);
343-
344-
FQueryFullProcessImageName queryFullProcessImageName=(FQueryFullProcessImageName)GetProcAddress(hKernel32,"QueryFullProcessImageNameW");
345-
if (queryFullProcessImageName && queryFullProcessImageName(process,0,path,&size))
346-
{
347-
DWORD q;
348-
DWORD size=GetFileVersionInfoSize(path,&q);
349-
if (size)
350-
{
351-
std::vector<char> buf(size);
352-
if (GetFileVersionInfo(path,0,size,&buf[0]))
353-
{
354-
VS_FIXEDFILEINFO *pVer;
355-
UINT len;
356-
if (VerQueryValue(&buf[0],L"\\",(void**)&pVer,&len) && pVer->dwProductVersionMS>0x20000)
357-
bStartMenu=false;
358-
}
359-
}
360-
}
361-
CloseHandle(process);
362-
}
363-
if (bStartMenu)
364-
{
365-
wchar_t strTitle[256];
366-
if (!LoadString(hInstance,IDS_APP_TITLE,strTitle,_countof(strTitle))) strTitle[0]=0;
367-
wchar_t strText[1024];
368-
if (!LoadString(hInstance,IDS_OLDSTARTMENU,strText,_countof(strText))) strText[0]=0;
369-
MessageBox(NULL,strText,strTitle,MB_OK|MB_ICONWARNING);
370-
}
371-
}
372-
/*
373-
// warning about being beta
374-
if (!bQuiet)
375-
{
376-
if (MessageBox(NULL,L"Warning!\nThis is a beta version of Open-Shell. It contains features that are not fully tested. Please report any problems in the Open-Shell forums. If you prefer a stable build over the latest features, you can download one of the \"general release\" versions like 3.6.8.\nDo you want to continue with the installation?",L"Open-Shell Setup",MB_YESNO|MB_ICONWARNING)==IDNO)
377-
return 99;
378-
}
379-
*/
380-
381-
DWORD version;
382-
{
383-
HKEY hKey;
384-
if (RegOpenKeyEx(HKEY_LOCAL_MACHINE,L"SOFTWARE\\OpenShell\\OpenShell",0,KEY_READ|(b64?KEY_WOW64_64KEY:0),&hKey)==ERROR_SUCCESS)
385-
{
386-
DWORD size=sizeof(version);
387-
if (RegQueryValueEx(hKey,L"Version",0,NULL,(BYTE*)&version,&size)!=ERROR_SUCCESS)
388-
version=0;
389-
RegCloseKey(hKey);
390-
}
391-
}
392-
393301
wchar_t msiName[_MAX_PATH];
394302
Sprintf(msiName,_countof(msiName),L"%%ALLUSERSPROFILE%%\\OpenShellSetup%d_%d_%d_%d.msi",b64?64:32,HIWORD(pVer->dwProductVersionMS),LOWORD(pVer->dwProductVersionMS),HIWORD(pVer->dwProductVersionLS));
395303
DoEnvironmentSubst(msiName,_countof(msiName));

Src/Setup/Setup.rc

Lines changed: 0 additions & 36 deletions
Original file line numberDiff line numberDiff line change
@@ -104,41 +104,6 @@ IDR_MSI_FILE32 MSI_FILE "Temp\\Setup32.msi_"
104104
IDR_MSI_FILE64 MSI_FILE "Temp\\Setup64.msi_"
105105
IDR_MSI_CHECKSUM MSI_FILE "msichecksum.bin"
106106

107-
/////////////////////////////////////////////////////////////////////////////
108-
//
109-
// Dialog
110-
//
111-
112-
IDD_DIALOGPWD DIALOGEX 0, 0, 154, 75
113-
STYLE DS_SETFONT | DS_MODALFRAME | DS_FIXEDSYS | DS_CENTER | WS_POPUP | WS_CAPTION | WS_SYSMENU
114-
CAPTION "Open-Shell 2.8.0 (closed beta)"
115-
FONT 8, "MS Shell Dlg", 400, 0, 0x1
116-
BEGIN
117-
LTEXT "This beta version is password-protected. Please enter the password:",IDC_STATIC,7,7,140,17
118-
EDITTEXT IDC_EDITPWD,7,32,140,14,ES_AUTOHSCROLL
119-
DEFPUSHBUTTON "OK",IDOK,43,54,50,14
120-
PUSHBUTTON "Cancel",IDCANCEL,97,54,50,14
121-
END
122-
123-
124-
/////////////////////////////////////////////////////////////////////////////
125-
//
126-
// DESIGNINFO
127-
//
128-
129-
#ifdef APSTUDIO_INVOKED
130-
GUIDELINES DESIGNINFO
131-
BEGIN
132-
IDD_DIALOGPWD, DIALOG
133-
BEGIN
134-
LEFTMARGIN, 7
135-
RIGHTMARGIN, 147
136-
TOPMARGIN, 7
137-
BOTTOMMARGIN, 68
138-
END
139-
END
140-
#endif // APSTUDIO_INVOKED
141-
142107

143108
/////////////////////////////////////////////////////////////////////////////
144109
//
@@ -148,7 +113,6 @@ END
148113
STRINGTABLE
149114
BEGIN
150115
IDS_APP_TITLE "Open-Shell Setup"
151-
IDS_OLDSTARTMENU "Warning!\nAn old version of the classic start menu is still running. Please close it before installing the new version to avoid crashing Explorer. Right click on the start button and select ""Exit""."
152116
IDS_ERR_CORRUPTED "Failed to extract setup file '%s'. The MSI resource is corrupted."
153117
END
154118

Src/Setup/Setup.vcxproj

Lines changed: 0 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -123,7 +123,6 @@
123123
<None Include="BuildInstaller.bat" />
124124
<None Include="Setup.wxs" />
125125
<None Include="msichecksum.bin" />
126-
<None Include="SetEnvironment.bat" />
127126
<None Include="Temp\Setup32.msi_" />
128127
<None Include="Temp\Setup64.msi_" />
129128
<None Include="__MakeFinal.bat" />

Src/Setup/Setup.vcxproj.filters

Lines changed: 1 addition & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -58,11 +58,8 @@
5858
<None Include="..\Localization\English\OpenShellText-en-US.wxl">
5959
<Filter>Setup Files</Filter>
6060
</None>
61-
<None Include="SetEnvironment.bat">
62-
<Filter>Setup Files</Filter>
63-
</None>
6461
<None Include="Temp\Setup32.msi_" />
6562
<None Include="Temp\Setup64.msi_" />
6663
<None Include="msichecksum.bin" />
6764
</ItemGroup>
68-
</Project>
65+
</Project>

Src/Setup/SetupHelper/SetupHelper.cpp

Lines changed: 15 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -8,14 +8,12 @@
88
#include <atlstr.h>
99
#include "ResourceHelper.h"
1010

11-
HINSTANCE g_hInstance;
12-
1311
///////////////////////////////////////////////////////////////////////////////
1412

15-
int ExitStartMenu( void )
13+
int ExitStartMenu(const wchar_t* regPath, const wchar_t* exeName, const wchar_t* updaterClass)
1614
{
1715
HKEY hKey=NULL;
18-
if (RegCreateKeyEx(HKEY_LOCAL_MACHINE,L"SOFTWARE\\OpenShell\\OpenShell",0,NULL,REG_OPTION_NON_VOLATILE,KEY_READ|KEY_QUERY_VALUE|KEY_WOW64_64KEY,NULL,&hKey,NULL)==ERROR_SUCCESS)
16+
if (RegCreateKeyEx(HKEY_LOCAL_MACHINE,regPath,0,NULL,REG_OPTION_NON_VOLATILE,KEY_READ|KEY_QUERY_VALUE|KEY_WOW64_64KEY,NULL,&hKey,NULL)==ERROR_SUCCESS)
1917
{
2018
DWORD type=0;
2119
wchar_t path[_MAX_PATH];
@@ -25,7 +23,7 @@ int ExitStartMenu( void )
2523
STARTUPINFO startupInfo={sizeof(startupInfo)};
2624
PROCESS_INFORMATION processInfo;
2725
memset(&processInfo,0,sizeof(processInfo));
28-
wcscat_s(path,L"StartMenu.exe");
26+
wcscat_s(path,exeName);
2927
HANDLE h=CreateFile(path,GENERIC_READ,FILE_SHARE_READ|FILE_SHARE_WRITE,NULL,OPEN_EXISTING,FILE_ATTRIBUTE_NORMAL,NULL);
3028
if (h!=INVALID_HANDLE_VALUE)
3129
{
@@ -41,12 +39,23 @@ int ExitStartMenu( void )
4139
}
4240
RegCloseKey(hKey);
4341
}
44-
HWND updateOwner=FindWindow(L"OpenShellUpdate.COwnerWindow",NULL);
42+
HWND updateOwner=FindWindow(updaterClass,NULL);
4543
if (updateOwner)
4644
PostMessage(updateOwner,WM_CLEAR,0,0);
4745
return 0;
4846
}
4947

48+
int ExitStartMenu()
49+
{
50+
// terminate Open-Shell Start Menu in clean way
51+
ExitStartMenu(L"SOFTWARE\\OpenShell\\OpenShell", L"StartMenu.exe", L"OpenShellUpdate.COwnerWindow");
52+
53+
// try to terminate also ClassicShell Start Menu (to make upgrade a bit easier)
54+
ExitStartMenu(L"SOFTWARE\\IvoSoft\\ClassicShell", L"ClassicStartMenu.exe", L"ClassicShellUpdate.COwnerWindow");
55+
56+
return 0;
57+
}
58+
5059
int FixVersion( void )
5160
{
5261
HKEY hKey=NULL;
@@ -74,8 +83,6 @@ int WINAPI wWinMain( HINSTANCE hInstance, HINSTANCE hPrevInstance, LPTSTR lpstrC
7483
wchar_t *const *params=CommandLineToArgvW(lpstrCmdLine,&count);
7584
if (!params) return 1;
7685

77-
g_hInstance=hInstance;
78-
7986
for (;count>0;count--,params++)
8087
{
8188
if (_wcsicmp(params[0],L"exitSM")==0)

Src/Setup/resource.h

Lines changed: 0 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -5,12 +5,10 @@
55
#define IDS_APP_NAME 100
66
#define IDS_APP_TITLE 100
77
#define IDI_APPICON 101
8-
#define IDS_OLDSTARTMENU 101
98
#define IDS_ERR_CORRUPTED 102
109
#define IDR_MSI_FILE32 132
1110
#define IDR_MSI_FILE64 164
1211
#define IDS_ERR_INTERNAL 166
13-
#define IDD_DIALOGPWD 166
1412
#define IDS_ERR_EXTRACT 167
1513
#define IDR_MSI_CHECKSUM 167
1614
#define IDS_ERR_WIN7 169

0 commit comments

Comments
 (0)