微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

如何在Windows 10中使用msiexec安装python 2.7.18的两个实例?

如何解决如何在Windows 10中使用msiexec安装python 2.7.18的两个实例?

我的Windows 10计算机(位于C:\Python27中)有一个Python 2.7.18实例。 现在,我想将完全相同的Python的另一个实例安装到另一个位置(例如C:\my_app\python27),但是msiexec程序有问题。
我有Python网站上的“ python-2.7.18.amd64.msi”安装程序,启动该程序时,它询问我是否要更改,修复或删除已安装的实例。

我了解了可以使用的不同标志和设置(例如TARGETDIRAPPDIRINSTALLDIR等),但没有任何帮助。 我确信这可能是因为它只是将副本安装到另一个位置。

我该怎么办?

解决方法

MSI“知道”通过安装程序中嵌入的许多GUID安装的内容。此设计是MSI的“固有”功能,因此不旨在或完全不适用于多个实例的“按设计”:

打包代码 :唯一标识一个MSI文件。除非它是已复制的同一文件(否则,它当然是相同的文件-二进制相同),否则两个MSI文件之间的GUID永远不应相同。如果两个MSI文件不同并且具有相同的程序包GUID,则在设计上会将它们视为同一文件。这可能会导致您遇到过一些最神秘的问题。始终自动生成此GUID(从技术上讲应该从未公开过它?)。

产品代码 :标识已安装产品的唯一产品实例。您不能使用相同的产品GUID重复安装相同的MSI。您可以使用次要升级就地升级现有安装(然后,两个MSI之间的产品代码相同)。这将产生一个更新的实例,而不是您希望的两个并行安装。这是使您第二次运行该MSI的GUID以维护模式(修复,修改,卸载)显示-如“已安装此产品”中所示。包代码涉及一些复杂因素-技术性(您不能轻易愚弄它-不要反击它的MSI)。

升级代码 :标识产品系列。以某种方式相关的产品。通常用于实施重大升级。换句话说,用新的更高版本替换已经安装的旧版本。通常应该在相关版本中保持稳定。还有其他方法。知道你在做什么。

有多种方法可以解决此问题。这里有一些建议:

从本质上说: 1) 虚拟化, 2) 并行安装, 3) >实例转换。还是 4) 仅使用旧版非MSI安装程序?

对于没有注册表纠缠的简单产品,您可以简单地复制文件夹,但是对于真正的产品却很少。有注册的COM服务器,涉及GAC,冲突的文件关联以及许多其他问题,这些问题通常导致虚拟化是“最糟糕的选择”。

并行安装还需要进行许多技术上的调整-最重要的是changing all component GUIDs to be valid MSI-除非您使用实例转换概念(我不使用)。


链接:

,

您是否听说过有关安装多个版本的Python的 Anaconda发行版

基本上,conda是用于维护不同python环境以及在这些环境中安装和管理软件包的工具。

安装指南: https://docs.anaconda.com/anaconda/install/windows/

安装后,您可以执行以下命令:

conda create --name "python_env1" python=2.7.18 pip3
conda activate python_env1
conda deactivate
conda create --name "python_env2" python=2.7.18 pip3
conda activate python_env2

希望这个答案对您有帮助。

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。