在版本中降低3.5.0 版有一个.MSI
适用于 Windows 的安装程序,它有一个非常好的隐藏选项。该选项如下所示:
msiexec.exe /a "file.msi" /qb /L*V "file.log" ALLUSERS=0 TARGETDIR="target" CURRENTDIRECTORY="%~dp0" <additional options>
这基本上允许我忽略管理员权限,因为 MSI 转向某种针对整个网络的安装程序,因此需要权限解决方法。
Python 3.5.0 引入了一个新的.EXE
安装程序,它.MSI
本身就包含文件,你可以使用以下命令获取它们:
python-3.5.0.exe /layout [optional target directory]
但是这个解决方案确实存在一个令人讨厌的问题。当我这样做时,文件.MSI
有一个-d.msi
后缀,当我使用上面的命令手动解压它时msiexec
,每个文件也有这个后缀,这使得它成为彻底损坏安装。重命名文件实际上不是一个选项,因为每个文件都有-d.<file ext>
,而不是-d.msi.<file ext>
后缀,所以很难用批处理等工具简单地重命名它,除非我想检查多种情况(例如文件夹)。
有没有办法将安装程序的内容提取到单独的文件夹中,就像以前一样没有是否放入了任何其他东西Programs and features
,例如Python 3.5.0 (64bit)
或类似的东西?
或者其他问题 - 有什么方法可以禁止安装程序访问Programs and features
,完全阻止它询问管理员权限和注册表?
如果我想安装多个 python,而又不绑定任何东西,主要目的是测试,那么这个工具就非常有用。请注意,我无意使用 python launcher(那个py.exe
东西)、virtualenv 或任何其他替代“解决方案”,因为它们每个都只允许我安装一个单身的相同版本的 Python 安装和/或太大,无法快速使用。
答案1
子文件夹现在包含所有.msi
文件:
https://www.python.org/ftp/python/3.8.0/amd64/
答案2
显然,从 3.5 版开始的 Python 安装程序都有我需要的 MSI嵌入并且它们不会出来。但是每个 Python 都有 Web 安装程序,您可以使用它做同样的事情并获得一个有效的 Python 安装:
python-3.5.0-webinstall.exe /layout <folder>
这将下载Release
MSI 文件(不是Debug
或PDB
仅是)。然后,您需要过滤具有_d.msi
和_pdb.msi
后缀的文件,这现在对于 Batch 来说很简单,最终您将得到以下结构:
core.msi
dev.msi
doc.msi
exe.msi
launcher.msi
lib.msi
path.msi
pip.msi
python-3.6.0-webinstall.exe
tcltk.msi
test.msi
tools.msi
以及相当多的 VS 可再发行组件。根据您的需要,您可能需要删除工作目录中的.exe
、.msu
(redists)、_d.msi
、_pdb.msi
文件。其余的是Release
扩展解释器功能的文件,例如 launcher( py.exe
)、path(可能只是将 python 永久放入PATH
)等。
如果你用下面的命令运行每一个:
msiexec.exe /a <file> targetdir=<folder>
你得到了一个可以工作的便携式 Python 安装。注意这样的事情是未得到官方支持。