2010-06-22 35 views
0

我遇到了以下问题:我需要将安装包提供给客户端。部分代码是python,所以我必须确保它已安装。我正在使用NSIS进行安装,并希望将python安装到我的预定义文件夹(让它成为c:\ Program Files \ Project \ Python26)。对于我下载了Python的MSI和尝试执行以下步骤来安装它潜在的在Windows上多次安装Python

msiexec /package "$INSTDIR\packages\python-2.6.5.msi" /quiet TARGETDIR=c:\Program Files\Project\Python26 

这工作第一次(在尚未安装Python)的,但如果已安装的蟒蛇,我之间做出选择重新安装/维修/更换。有谁知道如何确保我可以在我的目录中安装python而不影响潜在安装的python?

回答

0

根据the docs,诸如/p(或可能是/o/c,取决于您的确切意图)等选项应符合您的目的。

+0

感谢亚历克斯的答案,但我想我需要澄清 - 如果Python已经安装 - 我不想用它做任何事情,选项p/o/c将重新安装蟒蛇 - 我想原始python完好无损,只需安装新的(我不需要更新注册表键 - 它们不会因为我正在使用/ quiet,或者将它添加到PATH变量中)。对不起,不清楚。 – Sergey 2010-06-22 17:09:04

+0

@Sergey,你说错了:'/ p'被记录(在我已经给出的URL中)为“仅当文件丢失时重新安装”。 - 如果**如果**有一个“原始python”,即它不是**丢失,'/ p'确实会使'msiexec'“离开它”,就像你想的那样。其他选项可以修复先前安装但存在某种程度损坏的安装(例如,对'/ c'有错误的校验和),这很有意义,因为如果发生这种情况,意味着它们已被破坏,因此是**不是**完好但破碎 - 但如果你不知何故神奇地确定,如果存在,它们是完整的,那么'/ p'适合你,不是吗? – 2010-06-22 20:09:52

+0

我想当你给你的'TARGETDIR'选项文件在你给的文件夹中检查。否则就没有任何意义,因为你最终可能会在原始安装文件夹中找到一些文件,而在'TARGETDIR'中则会出现一些文件。如果是这种情况,那么'/ p'不能解决OP的问题。 – 2011-01-10 22:33:11