如何将heat.exe中定义的变量-var设置到wxs文件中?
How to set the variable -var defined in heat.exe to the wxs file?
我是运行以下命令:
heat.exe dir bin\Release -sfrag -sreg -var var.sourcebin -dr myappfolder -cg myapp_comp_group
这会生成一个漂亮的 wxs 文件,看起来有点像这样:
<?xml version="1.0" encoding="utf-8"?>
<Wix xmlns="http://schemas.microsoft.com/wix/2006/wi">
<Fragment>
<ComponentGroup Id="myapp_comp_group">
<ComponentRef Id="cmpE519314043C2FFE1104E067D33CBC652" />
<ComponentRef Id="cmp0431CFEC47E793CE59C185A8BDD9D865" />
</ComponentGroup>
</Fragment>
<Fragment>
<DirectoryRef Id="myappfolder">
<Directory Id="dir4ADCEBD4F8C9DC384017088D96B7A1C3" Name="somebinfolder">
<Component Id="cmpE519314043C2FFE1104E067D33CBC652" Guid="EB84C1A8-7BF5-4967-878D-8DAD9DFFA0A6">
<File Id="filD8C8D39058B0FF5C9608B1F99B0CD5BA" KeyPath="yes" Source="$(var.sourcebin)\app.config" />
</Component>
</Directory>
</DirectoryRef>
</Fragment>
</Wix>
我在我的项目中通过热生成的 wxs 文件使用它,但出现错误,因为 $(var.sourcebin)
尚未设置。
<?xml version="1.0" encoding="UTF-8"?>
<Wix xmlns="http://schemas.microsoft.com/wix/2006/wi">
<?define sourcebin="C:\svn\myapp\bin\Release"?>
<!-- leaving some stuff out of course -->
<Module>
<ComponentGroupRef Id="myapp_comp_group"/>
</Module>
</Wix>
error CNDL0150: Undefined preprocessor variable '$(var.sourcebin)'.
我如何定义这个变量以便它被热生成文件拾取?我不想手动更改热生成文件,因为它每次都重新生成。
打开项目属性,选择构建选项卡并根据需要添加预处理器变量。
sourcebin="C:\svn\myapp\bin\Release";
在定义部分使用:
<?define sourcebin = $(var.sourcebin)?>
您可以保留原样的加热命令。
当您需要将变量从 msbuild(Wixproj 文件)传递到项目中的其他文件(wxs、wxi...)时,这将是相同的。使用TFS时常用。
我是运行以下命令:
heat.exe dir bin\Release -sfrag -sreg -var var.sourcebin -dr myappfolder -cg myapp_comp_group
这会生成一个漂亮的 wxs 文件,看起来有点像这样:
<?xml version="1.0" encoding="utf-8"?>
<Wix xmlns="http://schemas.microsoft.com/wix/2006/wi">
<Fragment>
<ComponentGroup Id="myapp_comp_group">
<ComponentRef Id="cmpE519314043C2FFE1104E067D33CBC652" />
<ComponentRef Id="cmp0431CFEC47E793CE59C185A8BDD9D865" />
</ComponentGroup>
</Fragment>
<Fragment>
<DirectoryRef Id="myappfolder">
<Directory Id="dir4ADCEBD4F8C9DC384017088D96B7A1C3" Name="somebinfolder">
<Component Id="cmpE519314043C2FFE1104E067D33CBC652" Guid="EB84C1A8-7BF5-4967-878D-8DAD9DFFA0A6">
<File Id="filD8C8D39058B0FF5C9608B1F99B0CD5BA" KeyPath="yes" Source="$(var.sourcebin)\app.config" />
</Component>
</Directory>
</DirectoryRef>
</Fragment>
</Wix>
我在我的项目中通过热生成的 wxs 文件使用它,但出现错误,因为 $(var.sourcebin)
尚未设置。
<?xml version="1.0" encoding="UTF-8"?>
<Wix xmlns="http://schemas.microsoft.com/wix/2006/wi">
<?define sourcebin="C:\svn\myapp\bin\Release"?>
<!-- leaving some stuff out of course -->
<Module>
<ComponentGroupRef Id="myapp_comp_group"/>
</Module>
</Wix>
error CNDL0150: Undefined preprocessor variable '$(var.sourcebin)'.
我如何定义这个变量以便它被热生成文件拾取?我不想手动更改热生成文件,因为它每次都重新生成。
打开项目属性,选择构建选项卡并根据需要添加预处理器变量。
sourcebin="C:\svn\myapp\bin\Release";
在定义部分使用:
<?define sourcebin = $(var.sourcebin)?>
您可以保留原样的加热命令。
当您需要将变量从 msbuild(Wixproj 文件)传递到项目中的其他文件(wxs、wxi...)时,这将是相同的。使用TFS时常用。