From 2237bdc595e3d33f941c40108eddfa262c19d960 Mon Sep 17 00:00:00 2001 From: Steve Dower Date: Thu, 16 Jul 2015 16:33:55 -0700 Subject: [PATCH] Adds option to install launcher for all users even when installing Python just-for-me. This helps mitigate issues when the incompatible Python 3.4 launcher is installed. Enables installer builds with the the text marker. Allows simple installs to include a custom description. --- Doc/using/win_installer.png | Bin 46563 -> 48953 bytes Doc/using/windows.rst | 12 ++- Tools/msi/build.bat | 14 ++- Tools/msi/bundle/Default.thm | 10 +- Tools/msi/bundle/Default.wxl | 8 +- .../PythonBootstrapperApplication.cpp | 102 +++++++++++++----- Tools/msi/bundle/bundle.targets | 2 +- Tools/msi/bundle/bundle.wxs | 10 +- Tools/msi/bundle/packagegroups/launcher.wxs | 4 +- Tools/msi/common.wxs | 2 +- Tools/msi/launcher/launcher_files.wxs | 8 +- Tools/msi/launcher/launcher_reg.wxs | 2 +- Tools/msi/msi.props | 4 +- 13 files changed, 125 insertions(+), 53 deletions(-) diff --git a/Doc/using/win_installer.png b/Doc/using/win_installer.png index 8e258927c32ad46be2125cae89f90a770a8c34ba..e5d5e07a1433bc0b9c7ed8929cc8d95437249855 100644 GIT binary patch literal 48953 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≪5cCJ-reEdLB-Ml861E(qfa}UK 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 z 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 T{obu0;Lqry>4nns&XNBIWe4pl literal 46563 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�O}mjAdyL(G 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 oF?9{ckrm*hbLn>LOz=^-xYp@#(loc.InstallMessage) - - + + #(loc.ShortPrependPathLabel) + #(loc.ShortInstallLauncherAllUsersLabel) @@ -43,7 +44,7 @@ #(loc.InstallHeader) - + @@ -63,7 +64,8 @@ #(loc.Include_testLabel) #(loc.Include_testHelpLabel) - #(loc.Include_launcherLabel) + #(loc.Include_launcherLabel) + #(loc.InstallLauncherAllUsersLabel) #(loc.Include_launcherHelpLabel) diff --git a/Tools/msi/bundle/Default.wxl b/Tools/msi/bundle/Default.wxl index 19ba7eb14b..c12fb65a2e 100644 --- a/Tools/msi/bundle/Default.wxl +++ b/Tools/msi/bundle/Default.wxl @@ -50,7 +50,9 @@ Creates shortcuts and file associations C&ustomize installation Choose location and features &Install - Uses setting preselected by your administrator + Use settings preselected by your administrator + +[SimpleInstallDescription] &Upgrade Now [TargetDir] @@ -81,7 +83,9 @@ Select Customize to review current options. Create shortcuts for installed applications Add Python to &environment variables Add &Python [ShortVersion] to PATH - Install as &Administrator + Install for &all users + for &all users (requires elevation) + Install &launcher for all users (recommended) &Precompile standard library Install debugging &symbols Install debu&g binaries (requires VS 2015 or later) diff --git a/Tools/msi/bundle/bootstrap/PythonBootstrapperApplication.cpp b/Tools/msi/bundle/bootstrap/PythonBootstrapperApplication.cpp index 2166304137..2d8f04d9d5 100644 --- a/Tools/msi/bundle/bootstrap/PythonBootstrapperApplication.cpp +++ b/Tools/msi/bundle/bootstrap/PythonBootstrapperApplication.cpp @@ -87,11 +87,13 @@ enum CONTROL_ID { ID_INSTALL_UPGRADE_BUTTON, ID_INSTALL_UPGRADE_CUSTOM_BUTTON, ID_INSTALL_CANCEL_BUTTON, - + ID_INSTALL_LAUNCHER_ALL_USERS_CHECKBOX, + // Customize Page ID_TARGETDIR_EDITBOX, ID_CUSTOM_ASSOCIATE_FILES_CHECKBOX, ID_CUSTOM_INSTALL_ALL_USERS_CHECKBOX, + ID_CUSTOM_INSTALL_LAUNCHER_ALL_USERS_CHECKBOX, ID_CUSTOM_COMPILE_ALL_CHECKBOX, ID_CUSTOM_BROWSE_BUTTON, ID_CUSTOM_BROWSE_BUTTON_LABEL, @@ -150,10 +152,12 @@ static THEME_ASSIGN_CONTROL_ID CONTROL_ID_NAMES[] = { { ID_INSTALL_UPGRADE_BUTTON, L"InstallUpgradeButton" }, { ID_INSTALL_UPGRADE_CUSTOM_BUTTON, L"InstallUpgradeCustomButton" }, { ID_INSTALL_CANCEL_BUTTON, L"InstallCancelButton" }, + { ID_INSTALL_LAUNCHER_ALL_USERS_CHECKBOX, L"InstallLauncherAllUsers" }, { ID_TARGETDIR_EDITBOX, L"TargetDir" }, { ID_CUSTOM_ASSOCIATE_FILES_CHECKBOX, L"AssociateFiles" }, { ID_CUSTOM_INSTALL_ALL_USERS_CHECKBOX, L"InstallAllUsers" }, + { ID_CUSTOM_INSTALL_LAUNCHER_ALL_USERS_CHECKBOX, L"CustomInstallLauncherAllUsers" }, { ID_CUSTOM_COMPILE_ALL_CHECKBOX, L"CompileAll" }, { ID_CUSTOM_BROWSE_BUTTON, L"CustomBrowseButton" }, { ID_CUSTOM_BROWSE_BUTTON_LABEL, L"CustomBrowseButtonLabel" }, @@ -261,10 +265,11 @@ class PythonBootstrapperApplication : public CBalBaseBootstrapperApplication { LPWSTR defaultDir = nullptr; LPWSTR targetDir = nullptr; LONGLONG elevated, crtInstalled, installAllUsers; - BOOL checked; + BOOL checked, launcherChecked; WCHAR wzPath[MAX_PATH] = { }; BROWSEINFOW browseInfo = { }; PIDLIST_ABSOLUTE pidl = nullptr; + DWORD pageId; HRESULT hr = S_OK; switch(id) { @@ -278,7 +283,7 @@ class PythonBootstrapperApplication : public CBalBaseBootstrapperApplication { case ID_INSTALL_BUTTON: SavePageSettings(); - if (!QueryElevateForCrtInstall()) { + if (!WillElevate() && !QueryElevateForCrtInstall()) { break; } @@ -344,18 +349,32 @@ class PythonBootstrapperApplication : public CBalBaseBootstrapperApplication { ReleaseStr(targetDir); } - checked = ThemeIsControlChecked(_theme, ID_CUSTOM_INSTALL_ALL_USERS_CHECKBOX); - if (!checked && !QueryElevateForCrtInstall()) { + if (!WillElevate() && !QueryElevateForCrtInstall()) { break; } OnPlan(_command.action); break; + case ID_INSTALL_LAUNCHER_ALL_USERS_CHECKBOX: + checked = ThemeIsControlChecked(_theme, ID_INSTALL_LAUNCHER_ALL_USERS_CHECKBOX); + _engine->SetVariableNumeric(L"InstallLauncherAllUsers", checked); + + ThemeControlElevates(_theme, ID_INSTALL_BUTTON, WillElevate()); + break; + + case ID_CUSTOM_INSTALL_LAUNCHER_ALL_USERS_CHECKBOX: + checked = ThemeIsControlChecked(_theme, ID_CUSTOM_INSTALL_LAUNCHER_ALL_USERS_CHECKBOX); + _engine->SetVariableNumeric(L"InstallLauncherAllUsers", checked); + + ThemeControlElevates(_theme, ID_CUSTOM_INSTALL_BUTTON, WillElevate()); + break; + case ID_CUSTOM_INSTALL_ALL_USERS_CHECKBOX: - hr = BalGetNumericVariable(L"WixBundleElevated", &elevated); checked = ThemeIsControlChecked(_theme, ID_CUSTOM_INSTALL_ALL_USERS_CHECKBOX); - ThemeControlElevates(_theme, ID_CUSTOM_INSTALL_BUTTON, checked && (FAILED(hr) || !elevated)); + _engine->SetVariableNumeric(L"InstallAllUsers", checked); + + ThemeControlElevates(_theme, ID_CUSTOM_INSTALL_BUTTON, WillElevate()); ThemeControlEnable(_theme, ID_CUSTOM_BROWSE_BUTTON_LABEL, !checked); if (checked) { _engine->SetVariableNumeric(L"CompileAll", 1); @@ -416,6 +435,7 @@ class PythonBootstrapperApplication : public CBalBaseBootstrapperApplication { case ID_MODIFY_BUTTON: // Some variables cannot be modified _engine->SetVariableString(L"InstallAllUsersState", L"disable"); + _engine->SetVariableString(L"InstallLauncherAllUsersState", L"disable"); _engine->SetVariableString(L"TargetDirState", L"disable"); _engine->SetVariableString(L"CustomBrowseButtonState", L"disable"); _modifying = TRUE; @@ -437,35 +457,36 @@ class PythonBootstrapperApplication : public CBalBaseBootstrapperApplication { void InstallPage_Show() { // Ensure the All Users install button has a UAC shield - LONGLONG elevated, installAll; - - if (FAILED(BalGetNumericVariable(L"WixBundleElevated", &elevated))) { - elevated = 0; - } + BOOL elevated = WillElevate(); + ThemeControlElevates(_theme, ID_INSTALL_BUTTON, elevated); + ThemeControlElevates(_theme, ID_INSTALL_SIMPLE_BUTTON, elevated); + ThemeControlElevates(_theme, ID_INSTALL_UPGRADE_BUTTON, elevated); + } + void Custom1Page_Show() { + LONGLONG installLauncherAllUsers; - if (SUCCEEDED(BalGetNumericVariable(L"InstallAllUsers", &installAll)) && installAll && !elevated) { - ThemeControlElevates(_theme, ID_INSTALL_BUTTON, TRUE); - ThemeControlElevates(_theme, ID_INSTALL_SIMPLE_BUTTON, TRUE); - ThemeControlElevates(_theme, ID_INSTALL_UPGRADE_BUTTON, TRUE); + if (FAILED(BalGetNumericVariable(L"InstallLauncherAllUsers", &installLauncherAllUsers))) { + installLauncherAllUsers = 0; } - } - void Custom1Page_Show() { + ThemeSendControlMessage(_theme, ID_CUSTOM_INSTALL_LAUNCHER_ALL_USERS_CHECKBOX, BM_SETCHECK, + installLauncherAllUsers ? BST_CHECKED : BST_UNCHECKED, 0); } void Custom2Page_Show() { HRESULT hr; - LONGLONG installAll, elevated, includeLauncher; + LONGLONG installAll, includeLauncher; - if (FAILED(BalGetNumericVariable(L"WixBundleElevated", &elevated))) { - elevated = 0; + if (FAILED(BalGetNumericVariable(L"InstallAllUsers", &installAll))) { + installAll = 0; } - if (SUCCEEDED(BalGetNumericVariable(L"InstallAllUsers", &installAll))) { - ThemeControlElevates(_theme, ID_CUSTOM_INSTALL_BUTTON, installAll && !elevated); + + if (WillElevate()) { + ThemeControlElevates(_theme, ID_CUSTOM_INSTALL_BUTTON, TRUE); ThemeShowControl(_theme, ID_CUSTOM_BROWSE_BUTTON_LABEL, SW_HIDE); } else { - installAll = 0; + ThemeControlElevates(_theme, ID_CUSTOM_INSTALL_BUTTON, FALSE); ThemeShowControl(_theme, ID_CUSTOM_BROWSE_BUTTON_LABEL, SW_SHOW); } @@ -1839,8 +1860,8 @@ private: COLORREF fg = fnt->crForeground, bg = fnt->crBackground; *brush = fnt->hBackground; RemapColor(&fg, &bg, brush); - SetTextColor(hDC, fg); - SetBkColor(hDC, bg); + ::SetTextColor(hDC, fg); + ::SetBkColor(hDC, bg); return TRUE; } @@ -2080,6 +2101,7 @@ private: for (DWORD i = 0; i < pPage->cControlIndices; ++i) { THEME_CONTROL* pControl = _theme->rgControls + pPage->rgdwControlIndices[i]; + BOOL enableControl = TRUE; // If this is a named control, try to set its default state. if (pControl->sczName && *pControl->sczName) { @@ -2091,7 +2113,7 @@ private: // If the control value isn't set then disable it. if (!SUCCEEDED(hr)) { - ThemeControlEnable(_theme, pControl->wId, FALSE); + enableControl = FALSE; } else { ThemeSendControlMessage( _theme, @@ -2110,13 +2132,25 @@ private: LPWSTR controlState = nullptr; hr = BalGetStringVariable(controlName, &controlState); if (SUCCEEDED(hr) && controlState && *controlState) { + if (controlState[0] == '[') { + LPWSTR formatted = nullptr; + if (SUCCEEDED(BalFormatString(controlState, &formatted))) { + StrFree(controlState); + controlState = formatted; + } + } + if (CSTR_EQUAL == ::CompareStringW(LOCALE_NEUTRAL, 0, controlState, -1, L"disable", -1)) { BalLog(BOOTSTRAPPER_LOG_LEVEL_STANDARD, "Disable control %ls", pControl->sczName); - ThemeControlEnable(_theme, pControl->wId, FALSE); + enableControl = FALSE; } else if (CSTR_EQUAL == ::CompareStringW(LOCALE_NEUTRAL, 0, controlState, -1, L"hide", -1)) { BalLog(BOOTSTRAPPER_LOG_LEVEL_STANDARD, "Hide control %ls", pControl->sczName); // TODO: This doesn't work ThemeShowControl(_theme, pControl->wId, SW_HIDE); + } else { + // An explicit state can override the lack of a + // backing variable. + enableControl = TRUE; } } StrFree(controlState); @@ -2124,6 +2158,8 @@ private: StrFree(controlName); } + ThemeControlEnable(_theme, pControl->wId, enableControl); + // Format the text in each of the new page's controls if (pControl->sczText && *pControl->sczText) { // If the wix developer is showing a hidden variable @@ -2405,6 +2441,16 @@ private: } } + BOOL WillElevate() { + static BAL_CONDITION WILL_ELEVATE_CONDITION = { + L"not WixBundleElevated and (InstallAllUsers or (InstallLauncherAllUsers and Include_launcher))", + L"" + }; + BOOL result; + + return SUCCEEDED(BalConditionEvaluate(&WILL_ELEVATE_CONDITION, _engine, &result, nullptr)) && result; + } + BOOL IsCrtInstalled() { if (_crtInstalledToken > 0) { return TRUE; diff --git a/Tools/msi/bundle/bundle.targets b/Tools/msi/bundle/bundle.targets index 1ff00015b9..b77646bec4 100644 --- a/Tools/msi/bundle/bundle.targets +++ b/Tools/msi/bundle/bundle.targets @@ -88,7 +88,7 @@ - diff --git a/Tools/msi/bundle/bundle.wxs b/Tools/msi/bundle/bundle.wxs index 678dac4e87..761384e7f2 100644 --- a/Tools/msi/bundle/bundle.wxs +++ b/Tools/msi/bundle/bundle.wxs @@ -24,15 +24,16 @@ + - + - + - + @@ -45,6 +46,8 @@ + + @@ -67,6 +70,7 @@ + diff --git a/Tools/msi/bundle/packagegroups/launcher.wxs b/Tools/msi/bundle/packagegroups/launcher.wxs index d09175f7dc..77c6ac5dde 100644 --- a/Tools/msi/bundle/packagegroups/launcher.wxs +++ b/Tools/msi/bundle/packagegroups/launcher.wxs @@ -9,7 +9,7 @@ DownloadUrl="$(var.DownloadUrl)" ForcePerMachine="yes" EnableFeatureSelection="yes" - InstallCondition="InstallAllUsers and Include_launcher" /> + InstallCondition="(InstallAllUsers or InstallLauncherAllUsers) and Include_launcher" /> + InstallCondition="not (InstallAllUsers or InstallLauncherAllUsers) and Include_launcher" /> \ No newline at end of file diff --git a/Tools/msi/common.wxs b/Tools/msi/common.wxs index cc39540a2b..9f96bd3f4c 100644 --- a/Tools/msi/common.wxs +++ b/Tools/msi/common.wxs @@ -103,7 +103,7 @@ - + diff --git a/Tools/msi/launcher/launcher_files.wxs b/Tools/msi/launcher/launcher_files.wxs index 589dee5654..7148258a00 100644 --- a/Tools/msi/launcher/launcher_files.wxs +++ b/Tools/msi/launcher/launcher_files.wxs @@ -3,22 +3,22 @@ - + - + NOT ALLUSERS=1 - + ALLUSERS=1 - + diff --git a/Tools/msi/launcher/launcher_reg.wxs b/Tools/msi/launcher/launcher_reg.wxs index eef71c8d39..d00f442fd0 100644 --- a/Tools/msi/launcher/launcher_reg.wxs +++ b/Tools/msi/launcher/launcher_reg.wxs @@ -3,7 +3,7 @@ - + diff --git a/Tools/msi/msi.props b/Tools/msi/msi.props index 2d13aef698..29be129328 100644 --- a/Tools/msi/msi.props +++ b/Tools/msi/msi.props @@ -81,10 +81,10 @@ $(DefineConstants);CRTRedist=$(CRTRedist); - + $(DefineConstants);TestPrefix=;FileExtension=py; - + $(DefineConstants);TestPrefix=x;FileExtension=px; -- 2.50.1