在 cx_freeze 中创建的 msi 不安装程序

Posted

技术标签:

【中文标题】在 cx_freeze 中创建的 msi 不安装程序【英文标题】:msi created in cx_freeze does not install program 【发布时间】:2019-08-03 14:17:58 【问题描述】:

我创建了一个 python 程序,并使用 cx_freeze 将其转换为 exe。仅使用“python setup.py build”创建 exe 时,一切正常。现在我正在尝试使用“python setup.py bdist_msi”为其创建安装程序,起初一切似乎都很好。

安装程序弹出并要求我选择一个目录。单击下一步后,Windows 要求我接受我是从未知发布者那里安装的。接受后,下一页立即跳转到“正在完成(程序)安装程序”,“点击完成退出安装程序”。点击完成后,我在任何地方都找不到我的程序文件,安装程序似乎什么也没做。

我尝试在多台计算机上运行它,但似乎没有任何效果。我认为这是我的 setup.py 脚本的问题。这确实包括我的“资源”文件夹中的几个 qml 文件和一些图片,我的“数据和可执行文件”文件夹中有几个 csv,还有一个由我的 python 脚本调用的 exe。

from cx_Freeze import setup, Executable


# dependencies
build_exe_options = 
    "packages": ['atexit', "os", "sys", "csv", "time", "functools", "PySide2.QtCore", "PySide2.QtWidgets", "PySide2.QtUiTools", "PySide2.QtQuick", "PySide2.QtQml", "PySide2.QtGui", "shiboken2"],


"include_files": ['README.md', r'Resources','inputClass.py', 'selections.py','simulationOutput.py',
                  'Data-and-executable'], 
                  "include_msvcr": True,
                  "excludes": ["Tkinter", "Tkconstants", "tcl", ],
                  "build_exe": "build",

                     

bdist_msi_options = 
    'add_to_path': False,
    'initial_target_dir': r'[ProgramFilesFolder]\%s\%s' % ("Name", "Product"),
                    

executable = [
    Executable("main.py",
               base="Win32GUI",
               targetName="product.exe",
               icon= r"Resources\logo_icon.ico"
               )
             ]


setup(name = "Product",
      version = "0.3",
      description = "Simulator",
      options="bdist_msi": bdist_msi_options,
               "build_exe": build_exe_options,
      executables=executable
     )

没有错误消息或任何其他信息可以提示我发生了什么。即使用 cmd 调用我的 .msi 也无法提供任何见解。

【问题讨论】:

创建一个完整的详细日志,如下所示:msiexec -i setup.msi -l*vx log.txt 我在控制台中运行了该代码,但我将“设置”更改为我的 .msi 文件名。当我这样做时,弹出的只是一个窗口,显示消息以“Windows® Installer.V 5.0.17763.404 msiexec /Option [Optional Parameter]”开头 这个命令有效。定期使用它。 .msi 名称或日志文件名称中是否有空格?然后你必须引用“my setup.msi”。 哇,我的坏小姐。我会仔细研究这个日志来解决这个问题! 【参考方案1】:

嘘。我的所有文件都在“build”文件夹中,而不是“build/exe.win-amd64-3.6”文件夹中。它有效。

【讨论】:

以上是关于在 cx_freeze 中创建的 msi 不安装程序的主要内容,如果未能解决你的问题,请参考以下文章

卸载以前通过 cx_freeze bdist_msi 创建的已安装 msi

.msi 使用 cx_Freeze 的快捷方式

在 anaconda 上安装 cx_freeze?

使用 cx_freeze 和 bdist_msi 为 PySide 应用程序创建 MSI

修复在 WiX 3.8 中创建的设置时出错

将cx_Freeze msi添加到路径