我有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脚本(来自变量或注册表)。
答案 0 :(得分:2)
因为这是一个文件路径,所以有几个选项。
(我最喜欢的)使用bind paths
- 如果您在File/@Source
属性中使用相对路径,或者您可以使用看起来像!(bindpath.VarName)
的显式命名绑定路径语法,那么您可以使用light.exe
开关通过命令行向-bp
提供一个或多个绑定路径(如果您愿意,可以多次)。
使用preprocessor variable
- 您可以使用File Source='$(var.VarName)'
并通过将$(var.VarName)
命令行开关传递给-d
来为candle.exe
提供值。例如,您的python脚本可以提示用户输入qv.exe文件的源位置,然后将结果传递给执行candle -dVarName="python_variable_value_goes_here"
的构建。它最终只是一个预处理器变量。
我更喜欢#1,因为它允许我在多个有序路径上搜索可执行文件,这些路径可能在链接时发生变化。使用预处理器变量在编译期间锁定路径。