首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >如何在安装前使用wix中的<二进制源文件>在自定义操作中执行python脚本

如何在安装前使用wix中的<二进制源文件>在自定义操作中执行python脚本
EN

Stack Overflow用户
提问于 2012-07-27 11:24:07
回答 3查看 2.9K关注 0票数 1

我使用python脚本在wix项目中执行自定义操作。

二进制Id="python_script“SourceFile="myscript.py”

海关行动,如:

CustomAction Id="CA_python_script“BinaryKey=python_script”Execute=“立即”Impersonate=“是”是“检查”ExeCommand=""COMMANDPROMPT“/c "C:\Python26\python.exe myscript.py”

我也曾尝试过:

CustomAction Id="CA_python_script“BinaryKey=python_script”Execute=“立即”Impersonate=“是”是“检查”ExeCommand=""COMMANDPROMPT“/c "C:\Python26\python.exe python_script”

失败,错误:

MSI (40:14) 15:18:47:204:注: 1: 1721 2: CA_python_script 3: C:\Windows\Installer\MSI33F9.tmp 4:"C:\Windows\system32\cmd.exe“/c "C:\Python26\python.exe myscript.py”错误1721。此Windows Installer程序包存在问题。无法运行此安装所需的程序。请与您的支持人员或软件包供应商联系。操作: CA_python_script,位置: C:\Windows\Installer\MSI33F9.tmp,命令:"C:\Windows\system32\cmd.exe“/c "C:\Python26\python.exe myscript.py”MSI (40:14) 15:18:51:782:产品:我的软件--错误1721。此Windows Installer程序包存在问题。无法运行此安装所需的程序。请与您的支持人员或软件包供应商联系。操作: backup_Registry_Cmd,位置: C:\Windows\Installer\MSI33F9.tmp,命令:"C:\Windows\system32\cmd.exe“/c "C:\Python26\python.exe myscript.py” 行动结束15:18:51: backup_Registry_Cmd。返回值3。

这里面有什么问题?

EN

回答 3

Stack Overflow用户

发布于 2013-05-14 23:38:17

我知道我是个迟到的人,但我偶然发现,我会为其他人负责。

根本的问题是您不能依赖用户:

  1. 安装Python
  2. 安装了正确的Python版本
  3. 安装python的位置。
  4. 正确安装的软件包/lib

您还只能从python运行可执行文件。您能做的最简单的事情就是将python脚本编译成一个EXE。

使用py2exepyInstaller或最佳冰冻等工具,您可以将您的python脚本“编译”到一个.EXE文件中,您可以从WiX项目中包含和运行该文件。

这样做的好处是,这些工具将确保您的python脚本被执行为正确的python二进制文件,并带来所需的所有依赖项,并将它们嵌入到.EXE文件中。

警告:这些解决方案并不是铁板一块的,它们非常具有版本性,但您可能会遇到问题,所以这可能对您的目的不起作用。

票数 1
EN

Stack Overflow用户

发布于 2012-07-27 14:52:20

二进制表中的自定义操作可以是DLL,也可以是EXEs。不支持提取文件并将其传递给另一个.exe。

票数 0
EN

Stack Overflow用户

发布于 2015-01-15 10:47:53

出现这种问题的原因之一是,您的命令中有一个空间。WiX对空间不太友好。

不是为了无耻地推广我写的一篇关于在使用WiX时处理脚本语言的确切主题的文章,但是这里是:语言

关于其他答案中提到的其他问题,也就是满足这里提到的其他要求的问题;我还编写了一本关于如何将exe安装程序从pythonlib转换为.msi:msi的指南。

这样做的原因是为了安装否则可卸载的python包(有些包需要Visual在pip中编译)。例如,如果没有二进制安装,lxml就无法工作。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/11686796

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档