将一个变量从python脚本传递给wix项目

时间:2013-03-15 04:29:55

标签: python-2.7 wix

我有python脚本,它有一个设置窗口,用户可以选择安装软件的安装路径,我有一个可以使用msbuild构建的应用程序的wix项目。我的问题是,如何将所选路径从我的脚本的设置窗口传递到我的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脚本(来自变量或注册表)。

1 个答案:

答案 0 :(得分:2)

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

  1. (我最喜欢的)使用bind paths - 如果您在File/@Source属性中使用相对路径,或者您可以使用看起来像!(bindpath.VarName)的显式命名绑定路径语法,那么您可以使用light.exe开关通过命令行向-bp提供一个或多个绑定路径(如果您愿意,可以多次)。

  2. 使用preprocessor variable - 您可以使用File Source='$(var.VarName)'并通过将$(var.VarName)命令行开关传递给-d来为candle.exe提供值。例如,您的python脚本可以提示用户输入qv.exe文件的源位置,然后将结果传递给执行candle -dVarName="python_variable_value_goes_here"的构建。它最终只是一个预处理器变量。

  3. 我更喜欢#1,因为它允许我在多个有序路径上搜索可执行文件,这些路径可能在链接时发生变化。使用预处理器变量在编译期间锁定路径。