0

我有一个生成的 GUI wxpython,用于选择wix项目创建 msi 所需的路径。当单击 GUI 中的应用按钮时,从 GUI 中选择的路径被写入注册表。选择的路径存储在一个变量中,比如数据,即:

data='C :\Sandbox\build\Windows\release\my.exe

以及写入注册表,即:

HKEY_CURRENT_USER\Software\Automation\myapp

现在我开发了 wix 项目来使用 msbuild 创建 msi。我希望 GUI 中的选定路径必须进入 wix 组件中的源路径。我的 wix 代码有点像下面,

<Component Id='MainExecutable' Guid='*'>
    <File Id='ExecutableFile' Name='my.exe' DiskId='1' Source='$(var.Sandbox)\my.exe' KeyPath='yes' Checksum='yes'/>
</Component>

使用上面的代码,我收到一条错误消息,

 error CNDL0150: Undefined pre processor variable '$(var.Sandbox)'

如何将 GUI 选择的变量“数据”传递到 wix 中的文件源路径?是否可以将注册表值发送到 wix?

4

2 回答 2

0

将 python 脚本中的变量“数据”作为 msbuild 属性传递给 wix。Python 脚本如下所示

data='C:\Sandbox\build\Windows\release\my.exe'
arg1 = '/t:Rebuild'
arg2 = '/p:Configuration=Release'
arg3 = '/p:Platform=x86'
arg4 = '/p:ExePath=data'
p = subprocess.call([self.msbuild,projpath,arg1,arg2,arg3])

并在您的wixproject中进行更改,如下所示。

<PropertyGroup>
    <DefineConstants>
    Sandbox=$(ExePath)
    </DefineConstants>
</PropertyGroup>

并在您的wxs文件中更改组件的源路径,如下所示

<Component Id='MainExecutable' Guid='*'>
<File Id='ExecutableFile' Name='my.exe' DiskId='1' Source='$(var.Sandbox)\my.exe' KeyPath='yes' Checksum='yes'/>       
</Component>
于 2013-03-22T05:05:25.893 回答
0

当您调用时,candle.exe您需要data通过名为Sandbox. 您可以使用如下所示的代码段来执行此操作:

from subprocess import call
call(["candle.exe", "-dSandbox=" + data])

当然,您还需要添加 .wxs 文件的路径等等。

于 2013-03-16T14:44:32.847 回答