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 | 104 +++++++++++++----- 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, 126 insertions(+), 54 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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 z 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 ZDaU(Jl`FZ&7#J8BJYD@<);T3K0RUwO?J58O literal 46563 zcmeAS@N?(olHy`uVBq!ia0y~yV4BRpz&L?}je&vTQ`YNq3=9m6#X;^)4C~IxykuZt zU`coMb!1@J*w6hZk(GggfwRCPvY3H^?=T269?xHq!oa{FQQ{g=5}cn_Ql40p%21G) znOCBhms+A=qGzCIn%ZiV%D}KS#M8wwq$2L^-|P#fH)HRybE_A|t%`9y8d?-6I(_vV zFRn@YKb0n3k~niv%*@Def<*H{p^c4!23{^I4xCLE7a3XdJJOUmdrc=K$T~1JIy6

x{mS4B})vCDm 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 KKbLh*2~7YRYpY=Z diff --git a/Doc/using/windows.rst b/Doc/using/windows.rst index 8e3c1103dd..213912feb3 100644 --- a/Doc/using/windows.rst +++ b/Doc/using/windows.rst @@ -130,6 +130,9 @@ of available options is shown below. +---------------------------+--------------------------------------+--------------------------+ | Include_launcher | Install :ref:`launcher`. | 1 | +---------------------------+--------------------------------------+--------------------------+ +| InstallLauncherAllUsers | Installs :ref:`launcher` for all | 1 | +| | users. | | ++---------------------------+--------------------------------------+--------------------------+ | Include_lib | Install standard library and | 1 | | | extension modules | | +---------------------------+--------------------------------------+--------------------------+ @@ -145,6 +148,9 @@ of available options is shown below. +---------------------------+--------------------------------------+--------------------------+ | SimpleInstall | Disable most install UI | 0 | +---------------------------+--------------------------------------+--------------------------+ +| SimpleInstallDescription | A custom message to display when the | (empty) | +| | simplified install UI is used. | | ++---------------------------+--------------------------------------+--------------------------+ For example, to silently install a default, system-wide Python installation, you could use the following command (from an elevated command prompt):: @@ -152,9 +158,11 @@ you could use the following command (from an elevated command prompt):: python-3.5.0.exe /quiet InstallAllUsers=1 PrependPath=1 Include_test=0 To allow users to easily install a personal copy of Python without the test -suite, you could provide a shortcut with the following command:: +suite, you could provide a shortcut with the following command. This will +display a simplified initial page and disallow customization:: - python-3.5.0.exe /passive InstallAllUsers=0 Include_launcher=0 Include_test=0 SimpleInstall=1 + python-3.5.0.exe InstallAllUsers=0 Include_launcher=0 Include_test=0 + SimpleInstall=1 SimpleInstallDescription="Just for me, no test suite." (Note that omitting the launcher also omits file associations, and is only recommended for per-user installs when there is also a system-wide installation diff --git a/Tools/msi/build.bat b/Tools/msi/build.bat index c135b63d21..5ae512fbbe 100644 --- a/Tools/msi/build.bat +++ b/Tools/msi/build.bat @@ -6,12 +6,14 @@ set PCBUILD=%D%..\..\PCBuild\ set BUILDX86= set BUILDX64= set BUILDDOC= +set BUILDPX= :CheckOpts if "%~1" EQU "-h" goto Help if "%~1" EQU "-x86" (set BUILDX86=1) && shift && goto CheckOpts if "%~1" EQU "-x64" (set BUILDX64=1) && shift && goto CheckOpts if "%~1" EQU "--doc" (set BUILDDOC=1) && shift && goto CheckOpts +if "%~1" EQU "--test-marker" (set BUILDPX=1) && shift && goto CheckOpts if not defined BUILDX86 if not defined BUILDX64 (set BUILDX86=1) && (set BUILDX64=1) @@ -35,22 +37,28 @@ if defined BUILDDOC ( if errorlevel 1 goto :eof ) +set BUILD_CMD="%D%bundle\snapshot.wixproj" +if defined BUILDPX ( + set BUILD_CMD=%BUILD_CMD% /p:UseTestMarker=true +) + if defined BUILDX86 ( "%PCBUILD%win32\python.exe" "%D%get_wix.py" - msbuild "%D%bundle\snapshot.wixproj" + msbuild %BUILD_CMD% if errorlevel 1 goto :eof ) if defined BUILDX64 ( "%PCBUILD%amd64\python.exe" "%D%get_wix.py" - msbuild "%D%bundle\snapshot.wixproj" /p:Platform=x64 + msbuild /p:Platform=x64 %BUILD_CMD% if errorlevel 1 goto :eof ) exit /B 0 :Help -echo build.bat [-x86] [-x64] [--doc] [-h] +echo build.bat [-x86] [-x64] [--doc] [-h] [--test-marker] echo. echo -x86 Build x86 installers echo -x64 Build x64 installers echo --doc Build CHM documentation +echo --test-marker Build installers with 'x' markers diff --git a/Tools/msi/bundle/Default.thm b/Tools/msi/bundle/Default.thm index 0c79dd50c0..4ba817642a 100644 --- a/Tools/msi/bundle/Default.thm +++ b/Tools/msi/bundle/Default.thm @@ -21,10 +21,11 @@ #(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; - } - - - 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); - } + 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 (FAILED(BalGetNumericVariable(L"InstallLauncherAllUsers", &installLauncherAllUsers))) { + installLauncherAllUsers = 0; + } + + 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;