Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/wix/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Python 2.7 将一个变量从python脚本传递到wix项目_Python 2.7_Wix - Fatal编程技术网

Python 2.7 将一个变量从python脚本传递到wix项目

Python 2.7 将一个变量从python脚本传递到wix项目,python-2.7,wix,Python 2.7,Wix,我有一个python脚本,它有一个设置窗口,用户可以在其中选择安装软件的安装路径,我有一个应用程序的wix项目,可以使用msbuild构建。我的问题是,如何将所选路径从脚本的设置窗口传递到wix组件的源路径?所选路径存储在变量“x”中,并写入注册表。我必须将变量“x”从脚本传递到wix或从注册表传递到wix。请帮帮我。我的wix代码如下所示 <Directory Id="TARGETDIR" Name="SourceDir"> <Directory Id="Pr

我有一个python脚本,它有一个设置窗口,用户可以在其中选择安装软件的安装路径,我有一个应用程序的wix项目,可以使用msbuild构建。我的问题是,如何将所选路径从脚本的设置窗口传递到wix组件的源路径?所选路径存储在变量“x”中,并写入注册表。我必须将变量“x”从脚本传递到wix或从注册表传递到wix。请帮帮我。我的wix代码如下所示

<Directory Id="TARGETDIR" Name="SourceDir">
        <Directory Id="ProgramFilesFolder">
            <Directory Id="INSTALLDIR" Name="Companyname" >
                <Directory Id="INSTALLFOLDER" Name="myapp">
                    <Component Id='MainExecutable' Guid='*'>
                    <File Id='ExecutableFile' Name='mv.exe' DiskId='1' Source='c:\myfolder\...\qv.exe' KeyPath='yes'/>
                    </Component> 

“Source”中的路径应该来自python scriptfrom variable或registry。

因为这是一个文件路径,所以您有两个选项

我最喜欢使用绑定路径-如果您在File/@Source属性中使用相对路径,或者您可以使用如下所示的显式命名绑定路径语法!bindpath.VarName然后,如果愿意,可以多次使用-bp开关通过命令行向light.exe提供一个或多个绑定路径

使用预处理器变量-您可以使用文件源=“$var.VarName”,并通过将-d命令行开关传递到candle.exe来提供$var.VarName的值。例如,您的python脚本可能会提示用户输入qv.exe文件的源位置,然后将结果传递给builddoing candle-dVarName=python\u变量\u值\u goes\u。它最终只是一个预处理器变量


我更喜欢1,因为它允许我在链接时可能更改的多个有序路径上搜索可执行文件。使用预处理器变量会在编译时锁定路径。

谢谢@ROb。由于我的项目是自动生成过程,您的建议可能不起作用。我无法在wix中硬编码路径。我应该从脚本的设置窗口获取路径,该窗口随用户更改而变化。我可以从注册表获取路径并将其传递到“源”路径吗?我很困惑。源路径是在生成时定义的,而不是在安装时定义的。你是在问如何设置安装路径吗?我是在问源路径。你上面提到的是正确的。假设源路径是某个已安装软件的源路径,那么如果用户更改了源路径怎么办?wix是否检测并更改它?不,wix构建过程中没有任何内容会搜索您机器上要包含在MSI中的文件。这是一件很不寻常的事您的python脚本或其他东西需要找到文件的位置并将其传递到WiX工具集的构建中。如果不清楚,我很抱歉。我希望源路径在用户控制下。它应该从python脚本的GUI中读取。