Python 如何在cx_freeze和distutils中指定msi的默认安装路径?

Python 如何在cx_freeze和distutils中指定msi的默认安装路径?,python,distutils,cx-freeze,Python,Distutils,Cx Freeze,我正在尝试从我们编写的Python应用程序创建一个安装程序。我编写了一个简单的setup.py文件,它生成了一个.msi文件。没问题,但是我想不出指定默认安装路径的方法。我们不希望它安装到默认的“C:\Program Files”目录。帮助?在创建安装程序时,Distutils的功能相当有限。我建议你改用。它非常简单,可以让您定制比distutils多得多的功能 另一种方法是手动将--initial target dir添加到setup.py中的参数列表中(在调用setup函数之前): 在当前版

我正在尝试从我们编写的Python应用程序创建一个安装程序。我编写了一个简单的setup.py文件,它生成了一个.msi文件。没问题,但是我想不出指定默认安装路径的方法。我们不希望它安装到默认的“C:\Program Files”目录。帮助?

在创建安装程序时,Distutils的功能相当有限。我建议你改用。它非常简单,可以让您定制比distutils多得多的功能

另一种方法是手动将--initial target dir添加到setup.py中的参数列表中(在调用
setup
函数之前):


在当前版本中,将以下内容添加到安装脚本中似乎可以提供相同的功能:

setup(
    ...
    options={'bdist_msi': {'initial_target_dir': 'C:\\alternate\\start\\path'}}
    ...
)

请注意,它需要反斜杠,而不是正斜杠。

因此我发现我可以在以下行中添加“-initial target dir”标志:
python setup.py bdist_msi--initial target dir
,但我希望在setup.py文件中这样做。需要注意的是,我们需要它与python 3兼容,如果我阅读的网站是正确的,NSIS不支持。抱歉没有在前面提到这一点。NSIS应该与任何东西一起使用-它不是特定于python的,也不依赖python,因此python版本无关紧要。不过,你也可以用另一种方法,我已经用它更新了答案。
setup(
    ...
    options={'bdist_msi': {'initial_target_dir': 'C:\\alternate\\start\\path'}}
    ...
)