【发布时间】:2019-07-23 11:21:38
【问题描述】:
我有一个 ASP.NET 核心应用程序,我正在为其创建 WIX 安装程序。我正在使用 Heat 生成所有文件:
<!-- Remove read-only attribute -->
<Exec Command="attrib -R %(ProjectReference.Filename).wxs" Condition="'%(ProjectReference.WebProject)'=='True'" />
<ItemGroup>
<LinkerBindInputPaths Include="%(ProjectReference.RootDir)%(ProjectReference.Directory)bin\publish\" />
</ItemGroup>
<!-- Generate a WiX installer file using Heat Tool -->
<HeatDirectory OutputFile="%(ProjectReference.Filename).wxs"
Directory="%(ProjectReference.RootDir)%(ProjectReference.Directory)bin\publish\"
DirectoryRefId="INSTALLFOLDER"
ComponentGroupName="%(ProjectReference.Filename)"
AutogenerateGuids="True"
SuppressCom="True"
SuppressFragments="True"
SuppressRegistry="True"
ToolPath="$(WixToolPath)"
Condition="'%(ProjectReference.WebProject)'=='True'" />
在我的WebApp.sxs 文件中放入如下条目:
<Component Id="cmp64BF6D207C595218157C321E631ED310" Guid="*">
<File Id="myExe" KeyPath="yes" Source="SourceDir\MyExe.exe" />
</Component>
问题是,我修改了Id属性,这样我就可以绑定到Product.wxs中的版本了:
<Product Id="*"
Name="..."
Manufacturer="..."
Version="!(bind.fileVersion.myExe)"
Language="1033"
UpgradeCode="143521a5-99df-4594-9d71-b028cddb9ed8">
我怎样才能让 heat 为这个文件保持相同的 ID?但同时添加任何新文件?
【问题讨论】:
-
您可以通过应用 XSLT(
HeatDirectory Transforms="MyTransform.xslt",this answer 中给出 XSLT 的示例)来删除或修改“MyExe.exe”的组件。 -
我认为你在倒退。不要替换 heat 生成的 ID,而是将 .wxs 文件中的“myExe”替换为 heat 生成的 ID。 Heat 每次都会生成相同的 ID。
标签: asp.net-core wix installation heat