0

我有一个 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> 

“源”中的路径应该来自 python 脚本(来自变量或注册表)。

4

1 回答 1

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". 它最终只是一个预处理器变量。

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

于 2013-03-15T05:50:21.423 回答