wix 和 heat 配置安装文件夹
wix and heat configure installation folder
我使用 WiX,我会将文件和另一个文件夹包含到我的安装程序中。
其实我有这个 project.wixproj :
<?xml version="1.0" encoding="utf-8"?>
<Project DefaultTargets="Build" xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
...
<ItemGroup>
<Compile Include="wixfile1.wxs" />
<Compile Include="wixfile2.wxs" />
</ItemGroup>
<Import Project="$(WixTargetsPath)" />
...
和两个 .wxs 文件 (wixfile1.wxs):
<Wix xmlns="http://schemas.microsoft.com/wix/2006/wi">
...
<Directory Id="TARGETDIR" Name="SourceDir">
<Directory Id="WINDOWSVOLUME">
<Directory Id="test" Name="test" >
<Directory Id="APPLICATIONROOTDIRECTORY" Name="Application test"/>
</Directory>
</Directory>
</Directory>
<DirectoryRef Id="APPLICATIONROOTDIRECTORY">
<Component Id="myimg.png" Guid="7435781f-2bf1-4f1b-8376-754c2d4dac68">
<File Id="myimg" Source="C:\imglol.png" KeyPath="yes" Checksum="yes"/>
</Component>
</DirectoryRef>
<Feature Id="myimg" Title="Main image" Level="1">
<ComponentRef Id="myimg.png" />
</Feature>
</Product>
</Wix>
并且通过热命令行生成的示例 wixfile2.wxs。我会部署所有名为 "API".
的文件夹
<?xml version="1.0" encoding="utf-8"?>
<Wix xmlns="http://schemas.microsoft.com/wix/2006/wi">
<Fragment>
<DirectoryRef Id="TARGETDIR">
<Directory Id="dirA4F7A43D3DBF467AC127F1422D00240E" Name="API">
<Component Id="cmpCCEB1A915DCA242C688E53A21CE3C3CD" Guid="{}">
<File Id="fil0507E8B9603778F116316274B82F92D9" KeyPath="yes" Source="SourceDir\Library.Def.xml" />
</Component>
<Component Id="cmp4D36C9F3F381088827D9A606380954B9" Guid="{}">
<File Id="fil1E594FEBC557E93E0B15FC1DC3DE315F" KeyPath="yes" Source="SourceDir\APPli.CFG" />
</Component>
<Component Id="cmpF940CA5BFB57C855744EC0E727B0B13E" Guid="{}">
<File Id="fil5488939102DA1D694DFD42512F2BBD77" KeyPath="yes" Source="SourceDir\AppControl.cgf" />
</Component>
<Component Id="cmp8FB86D8D349378672E4CCD03AF81F56D" Guid="{}">
<File Id="filBF7F9A64772328CD9FBCB2EABD140A91" KeyPath="yes" Source="SourceDir\Application.Configuration.xml" />
</Component> ........ and others folders and file
但是当我编译我的 wixproj 时,它可以工作,但是在 运行 安装程序之后,只有 myimg.png 部署在正确的位置,但 API 没有部署。
我会不会忘记了一些事情?
编辑 1:
现在使用 bradfordrg 解决方案,我在 wixproject 编译时遇到此错误:
"C:\project.wixproj" (cible par défaut) (1) ->(Link cible)
->C:\wixfile1.wxs(25): error LGHT0094: Unresolved rference to symbol 'Component:MyAPP' in section 'Product:*'. [C:\project.wixproj]
进入wixfile2我有:
<Fragment>
<ComponentGroup Id="APP">
<ComponentRef Id="cmpFE6698874FDA6C78569E0859730A1EEA" />
<ComponentRef Id="cmpB50D6DA51C4E18ACC1DA69264417232D" />
<ComponentRef Id="cmp1D36D13E7527C1AA7991A8BA6BD00215" />
<ComponentRef Id="cmpA22778B0611224EC3606522B68E34E2D" />
....
和wixfile1.wxs我有:
<Feature Id="myimg" Title="Main image" Level="1">
<ComponentRef Id="myimg.png" />
<ComponentRef Id="APP" />
</Feature>
很好,不是吗?
问题看起来像是 heat.exe 生成的组件未被任何 <Feature...>
元素引用。
当你运行heat.exe生成wixfile2.wxs
时,使用-cg MyAPI
选项在文件中生成一个<ComponentGroup...>
元素。这应该将此类内容添加到 wixfile2.wxs
:
<Fragment>
<ComponentGroup Id="MyAPP">
<ComponentRef Id="cmpCCEB1A915DCA242C688E53A21CE3C3CD" />
<ComponentRef Id="cmp4D36C9F3F381088827D9A606380954B9" />
...
</ComponentGroup>
</Fragment>
然后在wixfile1.wxs
中声明的特性中引用新的组件组:
<Feature Id="myimg" Title="Main image" Level="1">
<ComponentRef Id="myimg.png" />
<ComponentGroupRef Id="MyAPP" />
</Feature>
我使用 WiX,我会将文件和另一个文件夹包含到我的安装程序中。
其实我有这个 project.wixproj :
<?xml version="1.0" encoding="utf-8"?>
<Project DefaultTargets="Build" xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
...
<ItemGroup>
<Compile Include="wixfile1.wxs" />
<Compile Include="wixfile2.wxs" />
</ItemGroup>
<Import Project="$(WixTargetsPath)" />
...
和两个 .wxs 文件 (wixfile1.wxs):
<Wix xmlns="http://schemas.microsoft.com/wix/2006/wi">
...
<Directory Id="TARGETDIR" Name="SourceDir">
<Directory Id="WINDOWSVOLUME">
<Directory Id="test" Name="test" >
<Directory Id="APPLICATIONROOTDIRECTORY" Name="Application test"/>
</Directory>
</Directory>
</Directory>
<DirectoryRef Id="APPLICATIONROOTDIRECTORY">
<Component Id="myimg.png" Guid="7435781f-2bf1-4f1b-8376-754c2d4dac68">
<File Id="myimg" Source="C:\imglol.png" KeyPath="yes" Checksum="yes"/>
</Component>
</DirectoryRef>
<Feature Id="myimg" Title="Main image" Level="1">
<ComponentRef Id="myimg.png" />
</Feature>
</Product>
</Wix>
并且通过热命令行生成的示例 wixfile2.wxs。我会部署所有名为 "API".
的文件夹<?xml version="1.0" encoding="utf-8"?>
<Wix xmlns="http://schemas.microsoft.com/wix/2006/wi">
<Fragment>
<DirectoryRef Id="TARGETDIR">
<Directory Id="dirA4F7A43D3DBF467AC127F1422D00240E" Name="API">
<Component Id="cmpCCEB1A915DCA242C688E53A21CE3C3CD" Guid="{}">
<File Id="fil0507E8B9603778F116316274B82F92D9" KeyPath="yes" Source="SourceDir\Library.Def.xml" />
</Component>
<Component Id="cmp4D36C9F3F381088827D9A606380954B9" Guid="{}">
<File Id="fil1E594FEBC557E93E0B15FC1DC3DE315F" KeyPath="yes" Source="SourceDir\APPli.CFG" />
</Component>
<Component Id="cmpF940CA5BFB57C855744EC0E727B0B13E" Guid="{}">
<File Id="fil5488939102DA1D694DFD42512F2BBD77" KeyPath="yes" Source="SourceDir\AppControl.cgf" />
</Component>
<Component Id="cmp8FB86D8D349378672E4CCD03AF81F56D" Guid="{}">
<File Id="filBF7F9A64772328CD9FBCB2EABD140A91" KeyPath="yes" Source="SourceDir\Application.Configuration.xml" />
</Component> ........ and others folders and file
但是当我编译我的 wixproj 时,它可以工作,但是在 运行 安装程序之后,只有 myimg.png 部署在正确的位置,但 API 没有部署。
我会不会忘记了一些事情?
编辑 1: 现在使用 bradfordrg 解决方案,我在 wixproject 编译时遇到此错误:
"C:\project.wixproj" (cible par défaut) (1) ->(Link cible) ->C:\wixfile1.wxs(25): error LGHT0094: Unresolved rference to symbol 'Component:MyAPP' in section 'Product:*'. [C:\project.wixproj]
进入wixfile2我有:
<Fragment>
<ComponentGroup Id="APP">
<ComponentRef Id="cmpFE6698874FDA6C78569E0859730A1EEA" />
<ComponentRef Id="cmpB50D6DA51C4E18ACC1DA69264417232D" />
<ComponentRef Id="cmp1D36D13E7527C1AA7991A8BA6BD00215" />
<ComponentRef Id="cmpA22778B0611224EC3606522B68E34E2D" />
....
和wixfile1.wxs我有:
<Feature Id="myimg" Title="Main image" Level="1">
<ComponentRef Id="myimg.png" />
<ComponentRef Id="APP" />
</Feature>
很好,不是吗?
问题看起来像是 heat.exe 生成的组件未被任何 <Feature...>
元素引用。
当你运行heat.exe生成wixfile2.wxs
时,使用-cg MyAPI
选项在文件中生成一个<ComponentGroup...>
元素。这应该将此类内容添加到 wixfile2.wxs
:
<Fragment>
<ComponentGroup Id="MyAPP">
<ComponentRef Id="cmpCCEB1A915DCA242C688E53A21CE3C3CD" />
<ComponentRef Id="cmp4D36C9F3F381088827D9A606380954B9" />
...
</ComponentGroup>
</Fragment>
然后在wixfile1.wxs
中声明的特性中引用新的组件组:
<Feature Id="myimg" Title="Main image" Level="1">
<ComponentRef Id="myimg.png" />
<ComponentGroupRef Id="MyAPP" />
</Feature>