python 2.7 windows silent installer(.msi) - 设置路径的命令行选项?

时间:2015-12-11 01:10:01

标签: python windows windows-installer installer msiexec

使用静默安装程序(.msi)在Windows上安装python 2.7时,是否有一个命令行选项将Python添加到路径环境变量,如GUI选项?

Python 3.5安装程序默认包含一个选项PrependPath = 0,但Python 2.7可以使用它吗?

https://docs.python.org/3/using/windows.html

这里讨论了这个问题,但是没有解决Python 2.7的问题?

https://bugs.python.org/issue3561

修改

这批命令摇滚!!!

setx \ M PATH"%PATH%; C:\ Python \ Python27; C:\ Python \ Python27 \ Scripts"

但是setx会将存储的%PATH%字符串截断为1024字节。

2 个答案:

答案 0 :(得分:11)

Python MSI安装程序可以自2.4起更新系统路径。只需将 ADDLOCAL = ALL 添加到命令行即可。您必须在传播之前重新启动系统。

msiexec /i "python-2.7.11.amd64.msi" /passive /norestart ADDLOCAL=ALL

https://www.python.org/download/releases/2.4/msi/

答案 1 :(得分:1)

我观察到,在Windows 7(专业版)和python 2.7.14 x64上,不需要重新启动即可将Python添加到PATH。只需在安装后启动一个新的命令窗口,然后python就会出现在PATH中。

您可以通过运行msi来确定安装是否需要重新启动:

const passUserIdOnlyToACallback = function(userRecord, callbackFunction) {
  console.log("serializing...");
  callbackFunction(null, userRecord.id);
};
passport.serializeUser(passUserIdOnlyToACallback); 

function passUserRecordToCallbackById(userId, verifyCallback) {
  db.users.findInDatabaseById(userId, function(error, userRecord) {
    console.log("deserializing...");
    if (error) return verifyCallback(error);
    verifyCallback(null, userRecord) 
  })
}
passport.deserializeUser(passUserRecordToCallbackById);

也就是说,如果start/wait "" msiexec /i "python-2.7.11.amd64.msi" /passive /norestart ADDLOCAL=ALL if %errorlevel% == 3010 ( echo Success: reboot required ) else (if %errorlevel% == 0 ( echo Success ) else ( echo Installation failed with error code %errorlevel% ) ) 为3010(ERROR_SUCCESS_REBOOT_REQUIRED),则将需要重新启动。使用%errorlevel%会使cmd.exe等待直到msiexec进程完成。这使msiexec返回状态可用于cmd.exe。

顺便说一句,如果您希望系统中的所有用户都可以使用Python安装,则可能希望在命令行中包含选项start/wait