Browse Source

Setup: Display the failure line number to assist in troubleshooting + include taskbar variants 0 and 1

pull/4392/head
Amrsatrio 10 months ago
parent
commit
c64a17e78f
  1. 130
      ep_setup/ep_setup.c
  2. 22
      ep_setup/ep_setup.vcxproj

130
ep_setup/ep_setup.c

@ -15,6 +15,10 @@ processorArchitecture='*' publicKeyToken='6595b64144ccf1df' language='*'\"")
#endif #endif
#pragma comment(lib, "zlibstatic.lib") #pragma comment(lib, "zlibstatic.lib")
static UINT g_uFailureLine;
#define CHECK_OK(x) ((!x && !g_uFailureLine) ? (g_uFailureLine = __LINE__) : (void)0, (x))
BOOL SetupShortcut(BOOL bInstall, WCHAR* wszPath, WCHAR* wszArguments) BOOL SetupShortcut(BOOL bInstall, WCHAR* wszPath, WCHAR* wszArguments)
{ {
WCHAR wszTitle[MAX_PATH]; WCHAR wszTitle[MAX_PATH];
@ -150,7 +154,7 @@ BOOL SetupUninstallEntry(BOOL bInstall, WCHAR* wszPath)
0, 0,
REG_SZ, REG_SZ,
(const BYTE*)wszPath, (const BYTE*)wszPath,
(wcslen(wszPath) + 1) * sizeof(wchar_t) (DWORD)(wcslen(wszPath) + 1) * sizeof(wchar_t)
); );
} }
if (!dwLastError) if (!dwLastError)
@ -161,7 +165,7 @@ BOOL SetupUninstallEntry(BOOL bInstall, WCHAR* wszPath)
0, 0,
REG_SZ, REG_SZ,
(const BYTE*)_T(PRODUCT_NAME), (const BYTE*)_T(PRODUCT_NAME),
(wcslen(_T(PRODUCT_NAME)) + 1) * sizeof(wchar_t) (DWORD)(wcslen(_T(PRODUCT_NAME)) + 1) * sizeof(wchar_t)
); );
} }
if (!dwLastError) if (!dwLastError)
@ -172,7 +176,7 @@ BOOL SetupUninstallEntry(BOOL bInstall, WCHAR* wszPath)
0, 0,
REG_SZ, REG_SZ,
(const BYTE*)_T(PRODUCT_PUBLISHER), (const BYTE*)_T(PRODUCT_PUBLISHER),
(wcslen(_T(PRODUCT_PUBLISHER)) + 1) * sizeof(wchar_t) (DWORD)(wcslen(_T(PRODUCT_PUBLISHER)) + 1) * sizeof(wchar_t)
); );
} }
if (!dwLastError) if (!dwLastError)
@ -228,7 +232,7 @@ BOOL SetupUninstallEntry(BOOL bInstall, WCHAR* wszPath)
0, 0,
REG_SZ, REG_SZ,
(const BYTE*)wszBuf, (const BYTE*)wszBuf,
(wcslen(wszBuf) + 1) * sizeof(wchar_t) (DWORD)(wcslen(wszBuf) + 1) * sizeof(wchar_t)
); );
if (!dwLastError) if (!dwLastError)
{ {
@ -532,8 +536,11 @@ __declspec(noinline) BOOL InstallResourceHelper(BOOL bInstall, HMODULE hModule,
{ {
wchar_t path[MAX_PATH]; wchar_t path[MAX_PATH];
GetModuleFileNameW(hModule, path, MAX_PATH); GetModuleFileNameW(hModule, path, MAX_PATH);
if (_wcsicmp(path, wszPath) != 0)
{
return CopyFileW(path, wszPath, FALSE); return CopyFileW(path, wszPath, FALSE);
} }
}
return TRUE; return TRUE;
} }
@ -702,7 +709,7 @@ __declspec(noinline) BOOL ExtractDirectory(unzFile zipFile, const char* dirNameI
{ {
if (fileExt && !_stricmp(fileExt, "mui")) if (fileExt && !_stricmp(fileExt, "mui"))
{ {
if (!SystemHasLanguageInstalled(languages, filePathInDir, strchr(filePathInDir, '/') - filePathInDir)) if (!SystemHasLanguageInstalled(languages, filePathInDir, (int)(strchr(filePathInDir, '/') - filePathInDir)))
{ {
continue; continue;
} }
@ -725,7 +732,7 @@ __declspec(noinline) BOOL ExtractDirectory(unzFile zipFile, const char* dirNameI
if (secondLastDot != lastDot) if (secondLastDot != lastDot)
{ {
const char* langCode = secondLastDot + 1; const char* langCode = secondLastDot + 1;
if (!SystemHasLanguageInstalled(languages, langCode, lastDot - langCode)) if (!SystemHasLanguageInstalled(languages, langCode, (int)(lastDot - langCode)))
{ {
continue; continue;
} }
@ -826,6 +833,7 @@ void ProcessTaskbarDlls(BOOL* bInOutOk, BOOL bInstall, BOOL bExtractMode, HINSTA
{ {
LPCWSTR pwszTaskbarDllName = bExtractMode ? NULL : PickTaskbarDll(); LPCWSTR pwszTaskbarDllName = bExtractMode ? NULL : PickTaskbarDll();
if (*bInOutOk) *bInOutOk = InstallResource(bInstall && (bExtractMode || pwszTaskbarDllName && !wcscmp(pwszTaskbarDllName, L"ep_taskbar.0.dll")), hInstance, zipFile, "ep_taskbar.0.dll", wszPath, L"ep_taskbar.0.dll"); if (*bInOutOk) *bInOutOk = InstallResource(bInstall && (bExtractMode || pwszTaskbarDllName && !wcscmp(pwszTaskbarDllName, L"ep_taskbar.0.dll")), hInstance, zipFile, "ep_taskbar.0.dll", wszPath, L"ep_taskbar.0.dll");
if (*bInOutOk) *bInOutOk = InstallResource(bInstall && (bExtractMode || pwszTaskbarDllName && !wcscmp(pwszTaskbarDllName, L"ep_taskbar.1.dll")), hInstance, zipFile, "ep_taskbar.1.dll", wszPath, L"ep_taskbar.1.dll");
if (*bInOutOk) *bInOutOk = InstallResource(bInstall && (bExtractMode || pwszTaskbarDllName && !wcscmp(pwszTaskbarDllName, L"ep_taskbar.2.dll")), hInstance, zipFile, "ep_taskbar.2.dll", wszPath, L"ep_taskbar.2.dll"); if (*bInOutOk) *bInOutOk = InstallResource(bInstall && (bExtractMode || pwszTaskbarDllName && !wcscmp(pwszTaskbarDllName, L"ep_taskbar.2.dll")), hInstance, zipFile, "ep_taskbar.2.dll", wszPath, L"ep_taskbar.2.dll");
if (*bInOutOk) *bInOutOk = InstallResource(bInstall && (bExtractMode || pwszTaskbarDllName && !wcscmp(pwszTaskbarDllName, L"ep_taskbar.3.dll")), hInstance, zipFile, "ep_taskbar.3.dll", wszPath, L"ep_taskbar.3.dll"); if (*bInOutOk) *bInOutOk = InstallResource(bInstall && (bExtractMode || pwszTaskbarDllName && !wcscmp(pwszTaskbarDllName, L"ep_taskbar.3.dll")), hInstance, zipFile, "ep_taskbar.3.dll", wszPath, L"ep_taskbar.3.dll");
if (*bInOutOk) *bInOutOk = InstallResource(bInstall && (bExtractMode || pwszTaskbarDllName && !wcscmp(pwszTaskbarDllName, L"ep_taskbar.4.dll")), hInstance, zipFile, "ep_taskbar.4.dll", wszPath, L"ep_taskbar.4.dll"); if (*bInOutOk) *bInOutOk = InstallResource(bInstall && (bExtractMode || pwszTaskbarDllName && !wcscmp(pwszTaskbarDllName, L"ep_taskbar.4.dll")), hInstance, zipFile, "ep_taskbar.4.dll", wszPath, L"ep_taskbar.4.dll");
@ -1043,9 +1051,12 @@ int WINAPI wWinMain(
SHGetFolderPathW(NULL, SPECIAL_FOLDER, NULL, SHGFP_TYPE_CURRENT, wszPath); SHGetFolderPathW(NULL, SPECIAL_FOLDER, NULL, SHGFP_TYPE_CURRENT, wszPath);
wcscat_s(wszPath, MAX_PATH, _T(APP_RELATIVE_PATH)); wcscat_s(wszPath, MAX_PATH, _T(APP_RELATIVE_PATH));
bOk = CreateDirectoryW(wszPath, NULL); bOk = CreateDirectoryW(wszPath, NULL);
if (bOk || (!bOk && GetLastError() == ERROR_ALREADY_EXISTS)) if (!bOk && GetLastError() == ERROR_ALREADY_EXISTS)
{ {
bOk = TRUE; bOk = TRUE;
}
if (bOk)
{
HANDLE userToken = INVALID_HANDLE_VALUE; HANDLE userToken = INVALID_HANDLE_VALUE;
HWND hShellTrayWnd = FindWindowW(L"Shell_TrayWnd", NULL); HWND hShellTrayWnd = FindWindowW(L"Shell_TrayWnd", NULL);
@ -1247,8 +1258,8 @@ int WINAPI wWinMain(
// C:\Program Files\ExplorerPatcher // C:\Program Files\ExplorerPatcher
SHGetFolderPathW(NULL, SPECIAL_FOLDER, NULL, SHGFP_TYPE_CURRENT, wszPath); SHGetFolderPathW(NULL, SPECIAL_FOLDER, NULL, SHGFP_TYPE_CURRENT, wszPath);
wcscat_s(wszPath, MAX_PATH, _T(APP_RELATIVE_PATH)); wcscat_s(wszPath, MAX_PATH, _T(APP_RELATIVE_PATH));
if (bOk && bInstall) bOk = InstallResource(bInstall, hInstance, NULL, NULL, wszPath, _T(SETUP_UTILITY_NAME)); if (CHECK_OK(bOk) && bInstall) bOk = InstallResource(bInstall, hInstance, NULL, NULL, wszPath, _T(SETUP_UTILITY_NAME));
if (bOk) if (CHECK_OK(bOk))
{ {
if (!bInstall) if (!bInstall)
{ {
@ -1309,19 +1320,19 @@ int WINAPI wWinMain(
} }
} }
} }
if (bOk) bOk = InstallResource(bInstall, hInstance, zipFile, PRODUCT_NAME ".IA-32.dll", wszPath, _T(PRODUCT_NAME) L".IA-32.dll"); if (CHECK_OK(bOk)) bOk = InstallResource(bInstall, hInstance, zipFile, PRODUCT_NAME ".IA-32.dll", wszPath, _T(PRODUCT_NAME) L".IA-32.dll");
#if defined(_M_X64) #if defined(_M_X64)
if (bOk) bOk = InstallResource(bInstall, hInstance, zipFile, PRODUCT_NAME ".amd64.dll", wszPath, _T(PRODUCT_NAME) L".amd64.dll"); if (CHECK_OK(bOk)) bOk = InstallResource(bInstall, hInstance, zipFile, PRODUCT_NAME ".amd64.dll", wszPath, _T(PRODUCT_NAME) L".amd64.dll");
#elif defined(_M_ARM64) #elif defined(_M_ARM64)
if (bOk) bOk = InstallResource(bInstall, hInstance, zipFile, PRODUCT_NAME ".arm64.dll", wszPath, _T(PRODUCT_NAME) L".arm64.dll"); if (CHECK_OK(bOk)) bOk = InstallResource(bInstall, hInstance, zipFile, PRODUCT_NAME ".arm64.dll", wszPath, _T(PRODUCT_NAME) L".arm64.dll");
#endif #endif
if (bOk) bOk = InstallResource(bInstall, hInstance, zipFile, "ep_gui.dll", wszPath, L"ep_gui.dll"); if (CHECK_OK(bOk)) bOk = InstallResource(bInstall, hInstance, zipFile, "ep_gui.dll", wszPath, L"ep_gui.dll");
if (bOk) bOk = InstallResource(bInstall, hInstance, zipFile, "ep_dwm.exe", wszPath, L"ep_dwm.exe"); if (CHECK_OK(bOk)) bOk = InstallResource(bInstall, hInstance, zipFile, "ep_dwm.exe", wszPath, L"ep_dwm.exe");
if (bInstall) if (bInstall)
{ {
if (bOk) bOk = InstallResource(bInstall, hInstance, zipFile, "ep_weather_host.dll", wszPath, L"ep_weather_host.dll"); if (CHECK_OK(bOk)) bOk = InstallResource(bInstall, hInstance, zipFile, "ep_weather_host.dll", wszPath, L"ep_weather_host.dll");
if (bOk) bOk = InstallResource(bInstall, hInstance, zipFile, "ep_weather_host_stub.dll", wszPath, L"ep_weather_host_stub.dll"); if (CHECK_OK(bOk)) bOk = InstallResource(bInstall, hInstance, zipFile, "ep_weather_host_stub.dll", wszPath, L"ep_weather_host_stub.dll");
if (bOk) bOk = InstallResource(bInstall, hInstance, zipFile, "WebView2Loader.dll", wszPath, L"WebView2Loader.dll"); if (CHECK_OK(bOk)) bOk = InstallResource(bInstall, hInstance, zipFile, "WebView2Loader.dll", wszPath, L"WebView2Loader.dll");
} }
ProcessTaskbarDlls(&bOk, bInstall, FALSE, hInstance, zipFile, wszPath); ProcessTaskbarDlls(&bOk, bInstall, FALSE, hInstance, zipFile, wszPath);
const WCHAR* possibleDirs[] = const WCHAR* possibleDirs[] =
@ -1332,7 +1343,7 @@ int WINAPI wWinMain(
L"pt-PT", L"ro-RO", L"ru-RU", L"sk-SK", L"sl-SI", L"sr-Latn-RS", L"sv-SE", L"th-TH", L"tr-TR", L"uk-UA", L"pt-PT", L"ro-RO", L"ru-RU", L"sk-SK", L"sl-SI", L"sr-Latn-RS", L"sv-SE", L"th-TH", L"tr-TR", L"uk-UA",
L"vi-VN", L"zh-CN", L"zh-TW", L"pris", L"StartUI", L"vi-VN", L"zh-CN", L"zh-TW", L"pris", L"StartUI",
}; };
for (size_t i = 0; bOk && i < ARRAYSIZE(possibleDirs); i++) for (size_t i = 0; CHECK_OK(bOk) && i < ARRAYSIZE(possibleDirs); i++)
{ {
WCHAR wszDirectoryPath[MAX_PATH]; WCHAR wszDirectoryPath[MAX_PATH];
wcscpy_s(wszDirectoryPath, MAX_PATH, wszPath); wcscpy_s(wszDirectoryPath, MAX_PATH, wszPath);
@ -1351,17 +1362,17 @@ int WINAPI wWinMain(
const WCHAR* languages = GetSystemLanguages(); const WCHAR* languages = GetSystemLanguages();
if (bNoPniduiInThisBuild) if (bNoPniduiInThisBuild)
{ {
if (bOk) bOk = ExtractDirectory(zipFile, "pnidui/", wszPath, languages, LCT_MUI); if (CHECK_OK(bOk)) bOk = ExtractDirectory(zipFile, "pnidui/", wszPath, languages, LCT_MUI);
} }
if (bUnpackCustomStartUI) if (bUnpackCustomStartUI)
{ {
if (bOk) bOk = ExtractDirectory(zipFile, "Windows.UI.ShellCommon/", wszPath, languages, LCT_PRI); if (CHECK_OK(bOk)) bOk = ExtractDirectory(zipFile, "Windows.UI.ShellCommon/", wszPath, languages, LCT_PRI);
} }
} }
if (bOk) bOk = InstallResource(bInstall && bNoPniduiInThisBuild, hInstance, zipFile, "pnidui/pnidui.dll", wszPath, L"pnidui.dll"); if (CHECK_OK(bOk)) bOk = InstallResource(bInstall && bNoPniduiInThisBuild, hInstance, zipFile, "pnidui/pnidui.dll", wszPath, L"pnidui.dll");
if (bOk && bNoPniduiInThisBuild) if (CHECK_OK(bOk) && bNoPniduiInThisBuild)
{ {
// Windows Registry Editor Version 5.00 // Windows Registry Editor Version 5.00
// //
@ -1401,11 +1412,11 @@ int WINAPI wWinMain(
// C:\Windows // C:\Windows
// + dxgi.dll // + dxgi.dll
if (bOk) GetWindowsDirectoryW(wszPath, MAX_PATH); if (CHECK_OK(bOk)) GetWindowsDirectoryW(wszPath, MAX_PATH);
#if defined(_M_X64) #if defined(_M_X64)
if (bOk) bOk = InstallResource(bInstall, hInstance, zipFile, PRODUCT_NAME ".amd64.dll", wszPath, L"dxgi.dll"); if (CHECK_OK(bOk)) bOk = InstallResource(bInstall, hInstance, zipFile, PRODUCT_NAME ".amd64.dll", wszPath, L"dxgi.dll");
#elif defined(_M_ARM64) #elif defined(_M_ARM64)
if (bOk) bOk = InstallResource(bInstall, hInstance, zipFile, PRODUCT_NAME ".arm64.dll", wszPath, L"dxgi.dll"); if (CHECK_OK(bOk)) bOk = InstallResource(bInstall, hInstance, zipFile, PRODUCT_NAME ".arm64.dll", wszPath, L"dxgi.dll");
#endif #endif
// -------------------------------------------------------------------------------- // --------------------------------------------------------------------------------
@ -1421,16 +1432,18 @@ int WINAPI wWinMain(
// - Windows.UI.ShellCommon.pri // - Windows.UI.ShellCommon.pri
// - en-US\StartTileDataLegacy.dll.mui // - en-US\StartTileDataLegacy.dll.mui
// - pris2\Windows.UI.ShellCommon.en-US.pri // - pris2\Windows.UI.ShellCommon.en-US.pri
if (bOk) GetWindowsDirectoryW(wszPath, MAX_PATH); if (CHECK_OK(bOk)) GetWindowsDirectoryW(wszPath, MAX_PATH);
if (bOk) wcscat_s(wszPath, MAX_PATH, L"\\SystemApps\\Microsoft.Windows.StartMenuExperienceHost_cw5n1h2txyewy"); if (CHECK_OK(bOk)) wcscat_s(wszPath, MAX_PATH, L"\\SystemApps\\Microsoft.Windows.StartMenuExperienceHost_cw5n1h2txyewy");
if (CHECK_OK(bOk) && FileExistsW(wszPath))
{
#if defined(_M_X64) #if defined(_M_X64)
if (bOk) bOk = InstallResource(bInstall, hInstance, zipFile, PRODUCT_NAME ".amd64.dll", wszPath, L"dxgi.dll"); if (CHECK_OK(bOk)) bOk = InstallResource(bInstall, hInstance, zipFile, PRODUCT_NAME ".amd64.dll", wszPath, L"dxgi.dll");
#elif defined(_M_ARM64) #elif defined(_M_ARM64)
if (bOk) bOk = InstallResource(bInstall, hInstance, zipFile, PRODUCT_NAME ".arm64.dll", wszPath, L"dxgi.dll"); if (CHECK_OK(bOk)) bOk = InstallResource(bInstall, hInstance, zipFile, PRODUCT_NAME ".arm64.dll", wszPath, L"dxgi.dll");
#endif #endif
if (bOk) bOk = InstallResource(bInstall && IsWindows11(), hInstance, zipFile, "ep_startmenu.dll", wszPath, L"wincorlib.dll"); if (CHECK_OK(bOk)) bOk = InstallResource(bInstall && IsWindows11(), hInstance, zipFile, "ep_startmenu.dll", wszPath, L"wincorlib.dll");
if (bOk) bOk = DeleteResource(wszPath, L"wincorlib_orig.dll"); if (CHECK_OK(bOk)) bOk = DeleteResource(wszPath, L"wincorlib_orig.dll");
if (bOk && IsWindows11() && bInstall) if (CHECK_OK(bOk) && IsWindows11() && bInstall)
{ {
// Symlink wincorlib_orig.dll to wincorlib.dll in System32 // Symlink wincorlib_orig.dll to wincorlib.dll in System32
WCHAR wszOrigPath[MAX_PATH]; WCHAR wszOrigPath[MAX_PATH];
@ -1443,16 +1456,16 @@ int WINAPI wWinMain(
bOk = CreateSymbolicLinkW(wszSymLinkPath, wszOrigPath, 0); bOk = CreateSymbolicLinkW(wszSymLinkPath, wszOrigPath, 0);
} }
if (bOk) bOk = InstallResource(bInstall && bUnpackCustomStartUI, hInstance, zipFile, "JumpViewUI/JumpViewUI.dll", wszPath, L"JumpViewUI_.dll"); if (CHECK_OK(bOk)) bOk = InstallResource(bInstall && bUnpackCustomStartUI, hInstance, zipFile, "JumpViewUI/JumpViewUI.dll", wszPath, L"JumpViewUI_.dll");
if (bOk) bOk = InstallResource(bInstall && bUnpackCustomStartUI, hInstance, zipFile, "StartUI/StartUI.dll", wszPath, L"StartUI_.dll"); if (CHECK_OK(bOk)) bOk = InstallResource(bInstall && bUnpackCustomStartUI, hInstance, zipFile, "StartUI/StartUI.dll", wszPath, L"StartUI_.dll");
// Delete remnants from earlier versions // Delete remnants from earlier versions
if (bOk) bOk = DeleteResource(wszPath, L"AppResolverLegacy.dll"); if (CHECK_OK(bOk)) bOk = DeleteResource(wszPath, L"AppResolverLegacy.dll");
if (bOk) bOk = DeleteResource(wszPath, L"StartTileDataLegacy.dll"); if (CHECK_OK(bOk)) bOk = DeleteResource(wszPath, L"StartTileDataLegacy.dll");
if (bOk && IsWindows11()) bOk = DeleteResource(wszPath, L"Windows.UI.ShellCommon.pri"); if (CHECK_OK(bOk) && IsWindows11()) bOk = DeleteResource(wszPath, L"Windows.UI.ShellCommon.pri");
// .\en-US // .\en-US
if (bOk && IsWindows11()) if (CHECK_OK(bOk) && IsWindows11())
{ {
WCHAR wszSubPath[MAX_PATH]; WCHAR wszSubPath[MAX_PATH];
wcscpy_s(wszSubPath, MAX_PATH, wszPath); wcscpy_s(wszSubPath, MAX_PATH, wszPath);
@ -1460,12 +1473,12 @@ int WINAPI wWinMain(
if (FileExistsW(wszSubPath)) if (FileExistsW(wszSubPath))
{ {
bOk = DeleteResource(wszSubPath, L"StartTileDataLegacy.dll.mui"); bOk = DeleteResource(wszSubPath, L"StartTileDataLegacy.dll.mui");
if (bOk) bOk = RemoveDirectoryW(wszSubPath); if (CHECK_OK(bOk)) bOk = RemoveDirectoryW(wszSubPath);
} }
} }
// .\pris2 // .\pris2
if (bOk && IsWindows11()) if (CHECK_OK(bOk) && IsWindows11())
{ {
WCHAR wszSubPath[MAX_PATH]; WCHAR wszSubPath[MAX_PATH];
wcscpy_s(wszSubPath, MAX_PATH, wszPath); wcscpy_s(wszSubPath, MAX_PATH, wszPath);
@ -1473,27 +1486,31 @@ int WINAPI wWinMain(
if (FileExistsW(wszSubPath)) if (FileExistsW(wszSubPath))
{ {
bOk = DeleteResource(wszSubPath, L"Windows.UI.ShellCommon.en-US.pri"); bOk = DeleteResource(wszSubPath, L"Windows.UI.ShellCommon.en-US.pri");
if (bOk) bOk = RemoveDirectoryW(wszSubPath); if (CHECK_OK(bOk)) bOk = RemoveDirectoryW(wszSubPath);
} }
} }
// End remnant deletion // End remnant deletion
}
// -------------------------------------------------------------------------------- // --------------------------------------------------------------------------------
// C:\Windows\SystemApps\ShellExperienceHost_cw5n1h2txyewy // C:\Windows\SystemApps\ShellExperienceHost_cw5n1h2txyewy
// + dxgi.dll // + dxgi.dll
if (bOk) GetWindowsDirectoryW(wszPath, MAX_PATH); if (CHECK_OK(bOk)) GetWindowsDirectoryW(wszPath, MAX_PATH);
if (bOk) wcscat_s(wszPath, MAX_PATH, L"\\SystemApps\\ShellExperienceHost_cw5n1h2txyewy"); if (CHECK_OK(bOk)) wcscat_s(wszPath, MAX_PATH, L"\\SystemApps\\ShellExperienceHost_cw5n1h2txyewy");
if (CHECK_OK(bOk) && FileExistsW(wszPath))
{
#if defined(_M_X64) #if defined(_M_X64)
if (bOk && IsWindows11()) bOk = InstallResource(bInstall, hInstance, zipFile, PRODUCT_NAME ".amd64.dll", wszPath, L"dxgi.dll"); if (CHECK_OK(bOk) && IsWindows11()) bOk = InstallResource(bInstall, hInstance, zipFile, PRODUCT_NAME ".amd64.dll", wszPath, L"dxgi.dll");
#elif defined(_M_ARM64) #elif defined(_M_ARM64)
if (bOk && IsWindows11()) bOk = InstallResource(bInstall, hInstance, zipFile, PRODUCT_NAME ".arm64.dll", wszPath, L"dxgi.dll"); if (CHECK_OK(bOk) && IsWindows11()) bOk = InstallResource(bInstall, hInstance, zipFile, PRODUCT_NAME ".arm64.dll", wszPath, L"dxgi.dll");
#endif #endif
}
// -------------------------------------------------------------------------------- // --------------------------------------------------------------------------------
if (bOk) if (CHECK_OK(bOk))
{ {
GetSystemDirectoryW(wszPath, MAX_PATH); GetSystemDirectoryW(wszPath, MAX_PATH);
WCHAR* pArgs = NULL; WCHAR* pArgs = NULL;
@ -1507,7 +1524,7 @@ int WINAPI wWinMain(
bOk = SetupShortcut(bInstall, wszPath, pArgs + 1); bOk = SetupShortcut(bInstall, wszPath, pArgs + 1);
ZeroMemory(wszPath, MAX_PATH); ZeroMemory(wszPath, MAX_PATH);
} }
if (bOk) if (CHECK_OK(bOk))
{ {
wszPath[0] = L'"'; wszPath[0] = L'"';
SHGetFolderPathW(NULL, SPECIAL_FOLDER, NULL, SHGFP_TYPE_CURRENT, wszPath + 1); SHGetFolderPathW(NULL, SPECIAL_FOLDER, NULL, SHGFP_TYPE_CURRENT, wszPath + 1);
@ -1522,7 +1539,7 @@ int WINAPI wWinMain(
GetExitCodeProcess(ShExecInfo.hProcess, &dwExitCode); GetExitCodeProcess(ShExecInfo.hProcess, &dwExitCode);
CloseHandle(ShExecInfo.hProcess); CloseHandle(ShExecInfo.hProcess);
} }
if (bOk) if (CHECK_OK(bOk))
{ {
WCHAR wszArgs[MAX_PATH]; WCHAR wszArgs[MAX_PATH];
wszArgs[0] = L'/'; wszArgs[0] = L'/';
@ -1563,7 +1580,7 @@ int WINAPI wWinMain(
CloseHandle(sei.hProcess); CloseHandle(sei.hProcess);
} }
} }
if (bOk) if (CHECK_OK(bOk))
{ {
WCHAR wszArgs[MAX_PATH]; WCHAR wszArgs[MAX_PATH];
wszArgs[0] = L'/'; wszArgs[0] = L'/';
@ -1604,7 +1621,7 @@ int WINAPI wWinMain(
CloseHandle(sei.hProcess); CloseHandle(sei.hProcess);
} }
} }
if (bOk && bInstall) if (CHECK_OK(bOk) && bInstall)
{ {
HKEY hKey = NULL; HKEY hKey = NULL;
RegCreateKeyExW(HKEY_CURRENT_USER, L"SOFTWARE\\Policies\\Microsoft\\Windows\\Explorer", 0, NULL, REG_OPTION_NON_VOLATILE, KEY_READ, NULL, &hKey, NULL); RegCreateKeyExW(HKEY_CURRENT_USER, L"SOFTWARE\\Policies\\Microsoft\\Windows\\Explorer", 0, NULL, REG_OPTION_NON_VOLATILE, KEY_READ, NULL, &hKey, NULL);
@ -1622,12 +1639,12 @@ int WINAPI wWinMain(
{ {
SHGetFolderPathW(NULL, SPECIAL_FOLDER, NULL, SHGFP_TYPE_CURRENT, wszPath); SHGetFolderPathW(NULL, SPECIAL_FOLDER, NULL, SHGFP_TYPE_CURRENT, wszPath);
wcscat_s(wszPath, MAX_PATH, _T(APP_RELATIVE_PATH)); wcscat_s(wszPath, MAX_PATH, _T(APP_RELATIVE_PATH));
if (bOk) bOk = DeleteResource(wszPath, L"ep_weather_host.dll"); if (CHECK_OK(bOk)) bOk = DeleteResource(wszPath, L"ep_weather_host.dll");
if (bOk) bOk = DeleteResource(wszPath, L"ep_weather_host_stub.dll"); if (CHECK_OK(bOk)) bOk = DeleteResource(wszPath, L"ep_weather_host_stub.dll");
if (bOk) bOk = DeleteResource(wszPath, L"WebView2Loader.dll"); if (CHECK_OK(bOk)) bOk = DeleteResource(wszPath, L"WebView2Loader.dll");
} }
if (bOk) if (CHECK_OK(bOk))
{ {
if (!bInstall) if (!bInstall)
{ {
@ -1635,7 +1652,7 @@ int WINAPI wWinMain(
wcscat_s(wszPath, MAX_PATH, _T(APP_RELATIVE_PATH)); wcscat_s(wszPath, MAX_PATH, _T(APP_RELATIVE_PATH));
bOk = RemoveDirectoryRecursive(wszPath); bOk = RemoveDirectoryRecursive(wszPath);
} }
if (bOk && (!bInstall || g_cleanupFileCounter > 1)) if (CHECK_OK(bOk) && (!bInstall || g_cleanupFileCounter > 1))
{ {
WCHAR wszDirToDelete[MAX_PATH]; WCHAR wszDirToDelete[MAX_PATH];
SHGetFolderPathW(NULL, CSIDL_APPDATA, NULL, SHGFP_TYPE_CURRENT, wszDirToDelete); SHGetFolderPathW(NULL, CSIDL_APPDATA, NULL, SHGFP_TYPE_CURRENT, wszDirToDelete);
@ -1719,6 +1736,9 @@ int WINAPI wWinMain(
wchar_t mbText[1024]; wchar_t mbText[1024];
mbText[0] = 0; mbText[0] = 0;
LoadStringW(hInstance, IDS_SETUP_FAILED, mbText, ARRAYSIZE(mbText)); LoadStringW(hInstance, IDS_SETUP_FAILED, mbText, ARRAYSIZE(mbText));
wchar_t szDblNewlineAndLineNumber[32];
swprintf_s(szDblNewlineAndLineNumber, ARRAYSIZE(szDblNewlineAndLineNumber), L"\n\n%d", g_uFailureLine);
wcscat_s(mbText, ARRAYSIZE(mbText), szDblNewlineAndLineNumber);
MessageBoxW(NULL, mbText, _T(PRODUCT_NAME), MB_ICONERROR | MB_OK | MB_DEFBUTTON1); MessageBoxW(NULL, mbText, _T(PRODUCT_NAME), MB_ICONERROR | MB_OK | MB_DEFBUTTON1);
} }
if (bOk && bIsUndockingDisabled) if (bOk && bIsUndockingDisabled)

22
ep_setup/ep_setup.vcxproj

@ -235,26 +235,6 @@
<PreprocessorDefinitions>WITH_ENCRYPTION;%(PreprocessorDefinitions)</PreprocessorDefinitions> <PreprocessorDefinitions>WITH_ENCRYPTION;%(PreprocessorDefinitions)</PreprocessorDefinitions>
</ClCompile> </ClCompile>
</ItemDefinitionGroup> </ItemDefinitionGroup>
<ItemDefinitionGroup Condition="Exists('..\build\$(Configuration)\$(Platform)\ep_taskbar.2.dll')">
<ResourceCompile>
<PreprocessorDefinitions>EP_TASKBAR_2_EXISTS;%(PreprocessorDefinitions)</PreprocessorDefinitions>
</ResourceCompile>
</ItemDefinitionGroup>
<ItemDefinitionGroup Condition="Exists('..\build\$(Configuration)\$(Platform)\ep_taskbar.3.dll')">
<ResourceCompile>
<PreprocessorDefinitions>EP_TASKBAR_3_EXISTS;%(PreprocessorDefinitions)</PreprocessorDefinitions>
</ResourceCompile>
</ItemDefinitionGroup>
<ItemDefinitionGroup Condition="Exists('..\build\$(Configuration)\$(Platform)\ep_taskbar.4.dll')">
<ResourceCompile>
<PreprocessorDefinitions>EP_TASKBAR_4_EXISTS;%(PreprocessorDefinitions)</PreprocessorDefinitions>
</ResourceCompile>
</ItemDefinitionGroup>
<ItemDefinitionGroup Condition="Exists('..\build\$(Configuration)\$(Platform)\ep_taskbar.5.dll')">
<ResourceCompile>
<PreprocessorDefinitions>EP_TASKBAR_5_EXISTS;%(PreprocessorDefinitions)</PreprocessorDefinitions>
</ResourceCompile>
</ItemDefinitionGroup>
<ItemDefinitionGroup Condition="'$(Platform)'=='x64'"> <ItemDefinitionGroup Condition="'$(Platform)'=='x64'">
<ResourceCompile> <ResourceCompile>
<PreprocessorDefinitions>PLATFORM_AMD64;%(PreprocessorDefinitions)</PreprocessorDefinitions> <PreprocessorDefinitions>PLATFORM_AMD64;%(PreprocessorDefinitions)</PreprocessorDefinitions>
@ -300,6 +280,8 @@
<PackFile Include="..\build\$(Configuration)\$(Platform)\ep_dwm.exe" Condition="Exists('$(SolutionDir)\build\$(Configuration)\$(Platform)\ep_dwm.exe')" /> <PackFile Include="..\build\$(Configuration)\$(Platform)\ep_dwm.exe" Condition="Exists('$(SolutionDir)\build\$(Configuration)\$(Platform)\ep_dwm.exe')" />
<PackFile Include="..\build\$(Configuration)\$(Platform)\ep_gui.dll" Condition="Exists('$(SolutionDir)\build\$(Configuration)\$(Platform)\ep_gui.dll')" /> <PackFile Include="..\build\$(Configuration)\$(Platform)\ep_gui.dll" Condition="Exists('$(SolutionDir)\build\$(Configuration)\$(Platform)\ep_gui.dll')" />
<PackFile Include="..\build\$(Configuration)\$(Platform)\ep_startmenu.dll" Condition="Exists('$(SolutionDir)\build\$(Configuration)\$(Platform)\ep_startmenu.dll')" /> <PackFile Include="..\build\$(Configuration)\$(Platform)\ep_startmenu.dll" Condition="Exists('$(SolutionDir)\build\$(Configuration)\$(Platform)\ep_startmenu.dll')" />
<PackFile Include="..\build\$(Configuration)\$(Platform)\ep_taskbar.0.dll" Condition="Exists('$(SolutionDir)\build\$(Configuration)\$(Platform)\ep_taskbar.0.dll')" />
<PackFile Include="..\build\$(Configuration)\$(Platform)\ep_taskbar.1.dll" Condition="Exists('$(SolutionDir)\build\$(Configuration)\$(Platform)\ep_taskbar.1.dll')" />
<PackFile Include="..\build\$(Configuration)\$(Platform)\ep_taskbar.2.dll" Condition="Exists('$(SolutionDir)\build\$(Configuration)\$(Platform)\ep_taskbar.2.dll')" /> <PackFile Include="..\build\$(Configuration)\$(Platform)\ep_taskbar.2.dll" Condition="Exists('$(SolutionDir)\build\$(Configuration)\$(Platform)\ep_taskbar.2.dll')" />
<PackFile Include="..\build\$(Configuration)\$(Platform)\ep_taskbar.3.dll" Condition="Exists('$(SolutionDir)\build\$(Configuration)\$(Platform)\ep_taskbar.3.dll')" /> <PackFile Include="..\build\$(Configuration)\$(Platform)\ep_taskbar.3.dll" Condition="Exists('$(SolutionDir)\build\$(Configuration)\$(Platform)\ep_taskbar.3.dll')" />
<PackFile Include="..\build\$(Configuration)\$(Platform)\ep_taskbar.4.dll" Condition="Exists('$(SolutionDir)\build\$(Configuration)\$(Platform)\ep_taskbar.4.dll')" /> <PackFile Include="..\build\$(Configuration)\$(Platform)\ep_taskbar.4.dll" Condition="Exists('$(SolutionDir)\build\$(Configuration)\$(Platform)\ep_taskbar.4.dll')" />

Loading…
Cancel
Save