我使用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。
这里面有什么问题?
发布于 2013-05-14 23:38:17
我知道我是个迟到的人,但我偶然发现,我会为其他人负责。
根本的问题是您不能依赖用户:
您还只能从python运行可执行文件。您能做的最简单的事情就是将python脚本编译成一个EXE。
使用py2exe、pyInstaller或最佳冰冻等工具,您可以将您的python脚本“编译”到一个.EXE文件中,您可以从WiX项目中包含和运行该文件。
这样做的好处是,这些工具将确保您的python脚本被执行为正确的python二进制文件,并带来所需的所有依赖项,并将它们嵌入到.EXE文件中。
警告:这些解决方案并不是铁板一块的,它们非常具有版本性,但您可能会遇到问题,所以这可能对您的目的不起作用。
发布于 2012-07-27 14:52:20
二进制表中的自定义操作可以是DLL,也可以是EXEs。不支持提取文件并将其传递给另一个.exe。
发布于 2015-01-15 10:47:53
出现这种问题的原因之一是,您的命令中有一个空间。WiX对空间不太友好。
不是为了无耻地推广我写的一篇关于在使用WiX时处理脚本语言的确切主题的文章,但是这里是:语言
关于其他答案中提到的其他问题,也就是满足这里提到的其他要求的问题;我还编写了一本关于如何将exe安装程序从pythonlib转换为.msi:msi的指南。
这样做的原因是为了安装否则可卸载的python包(有些包需要Visual在pip中编译)。例如,如果没有二进制安装,lxml就无法工作。
https://stackoverflow.com/questions/11686796
复制相似问题