为什么剂量 cx_freeze 抛出像 'MSIError' 这样的异常

Why dose cx_freeze throw the exception like 'MSIError'

我遇到了将 .py 转换为 .exe 的问题。当我尝试使用 cx_freeze 打包时,我总是会得到 'MSIError',它是这样的:

Traceback (most recent call last):
File "setup.py", line 15, in <module>
  setup(name="NumberCounter",version="1.0",description="无",options={"build_exe":build_options},executables=executables)
File "C:\Users\apple1\AppData\Local\Programs\Python\Python35\lib\site-packages\cx_Freeze\dist.py", line 349, in setup
  distutils.core.setup(**attrs)
File "C:\Users\apple1\AppData\Local\Programs\Python\Python35\lib\distutils\core.py", line 148, in setup
  dist.run_commands()
File "C:\Users\apple1\AppData\Local\Programs\Python\Python35\lib\distutils\dist.py", line 955, in run_commands
  self.run_command(cmd)
File "C:\Users\apple1\AppData\Local\Programs\Python\Python35\lib\distutils\dist.py", line 974, in run_command
  cmd_obj.run()
File "C:\Users\apple1\AppData\Local\Programs\Python\Python35\lib\site-packages\cx_Freeze\windist.py", line 392, in run
  self.add_files()
File "C:\Users\apple1\AppData\Local\Programs\Python\Python35\lib\site-packages\cx_Freeze\windist.py", line 133, in add_files
  cab.commit(db)
File "C:\Users\apple1\AppData\Local\Programs\Python\Python35\lib\msilib\__init__.py", line 220, in commit
  add_stream(db, self.name, filename)
File "C:\Users\apple1\AppData\Local\Programs\Python\Python35\lib\msilib\__init__.py", line 129, in add_stream
  r.SetStream(1, path)
_msi.MSIError: 1: 1101 2: C:\Users\apple1\AppData\Local\Temp\tmp5kgryuh8 3: 2

我该如何解决,为什么会这样?

我会为您解压错误行。

_msi.MSIError: 1: 1101 2: C:\Users\apple1\AppData\Local\Temp\tmp5kgryuh8 3: 2
  • 根据 Windows Installer Error Messages,1101 表示 Could not open file stream: [2]. System error: [3]

  • 根据命令net helpmsg 2,系统错误 2 为 The system cannot find the file specified

该路径似乎是一个应该创建的临时文件,但根据错误,它可能不是。您可以尝试使用 Process Monitor 之类的工具来确定临时文件是否有任何问题。

我不知道 cx_freeze 有什么用处,但我知道 Windows 安装程序对 Unicode 的支持有点令人惊讶;它很容易半生不熟。因此,我会担心您的 description="无",并考虑将其设置为一个简单的纯 ASCII 字符串,看看它是否有帮助。