Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/python/298.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
如何在Windows 10中使用msiexec安装两个python 2.7.18实例?_Python_Installation_Windows Installer - Fatal编程技术网

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

如何在Windows 10中使用msiexec安装两个python 2.7.18实例?,python,installation,windows-installer,Python,Installation,Windows Installer,我在使用Windows 10的计算机中有一个Python 2.7.18的实例(位于C:\Python27)。 现在,我想将完全相同的Python的另一个实例安装到另一个位置(例如,C:\my\u app\python27),但我的msiexec程序有问题。 我有python网站上的“python-2.7.18.amd64.msi”安装程序,当我启动它时,它会询问我是否要更改、修复或删除已安装的实例 我了解到可以使用的不同标志和设置(例如,TARGETDIR,APPDIR,INSTALLDIR,等

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

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

我如何才能做到这一点?

MSI“知道”通过安装程序中嵌入的许多GUI安装了什么。该设计是MSI的“固有”设计,因此“设计”不打算或不完全适用于多个实例:

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

产品代码:标识已安装产品的唯一产品实例。不能使用相同的产品GUID反复安装相同的MSI。您可以使用较小的升级(MSI之间的产品代码相同)就地升级现有安装。这将生成一个更新的实例,而不是您喜欢的两个并排安装。这是使第二次运行该MSI显示在维护模式(修复、修改、卸载)下的GUID,如“此产品已安装”中所示。虽然包代码涉及到一些复杂的技术问题(你不能轻易愚弄它-不要与它反击的MSI对抗)

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

有很多方法可以解决这个问题。以下是一些建议:

因此本质上:
1)
虚拟化,
2)
并排安装,
3)
实例转换。或者
4)
只使用传统的非MSI安装程序

对于没有注册表纠缠的简单产品,您可以简单地复制文件夹,但对于真正的产品,情况很少如此。有注册的COM服务器、GAC参与、冲突的文件关联以及许多其他问题,这些问题往往导致虚拟化成为“最差”的选择

并排安装还需要一些技术调整——最重要的是——除非您使用实例转换概念(我不使用)

WiX引入了。这些是自动生成的组件GUID(对于大多数组件类型),因此它们可以根据您在磁盘上的安装位置进行更改


链接:

MSI“知道”通过安装程序中嵌入的大量GUI安装的内容。该设计是MSI的“固有”设计,因此“设计”不打算或不完全适用于多个实例:

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

产品代码:标识已安装产品的唯一产品实例。不能使用相同的产品GUID反复安装相同的MSI。您可以使用较小的升级(MSI之间的产品代码相同)就地升级现有安装。这将生成一个更新的实例,而不是您喜欢的两个并排安装。这是使第二次运行该MSI显示在维护模式(修复、修改、卸载)下的GUID,如“此产品已安装”中所示。虽然包代码涉及到一些复杂的技术问题(你不能轻易愚弄它-不要与它反击的MSI对抗)

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

有很多方法可以解决这个问题。以下是一些建议:

因此本质上:
1)
虚拟化,
2)
并排安装,
3)
实例转换。或者
4)
只使用传统的非MSI安装程序

对于没有注册表纠缠的简单产品,您可以简单地复制文件夹,但对于真正的产品,情况很少如此。存在已注册的COM服务器、GAC参与、冲突的文件关联和n
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