0

我将 VS 2005 合并模块包含在 MSI 中。代码就位,MSI 构建。

<Fragment>
  <DirectoryRef Id="TARGETDIR">

    <!-- 
    WiX docs say "There is generally no need to include the policy MSMs as part of the installation.", but, the former Installshield 
    project did include it, so, including here now. Remove it if it's actually not required. 
    http://wixtoolset.org/documentation/manual/v3/howtos/redistributables_and_install_checks/install_vcredist.html
    -->
    <Merge Id="VCRedist2005_32" SourceFile="$(var.RESOURCES)\MergeModules\VS2005\Microsoft_VC80_CRT_x86.msm" DiskId="1" Language="0"/>
    <Merge Id="VCRedist2005_64" SourceFile="$(var.RESOURCES)\MergeModules\VS2005\Microsoft_VC80_CRT_x86_x64.msm" DiskId="1" Language="0"/>
    <!--
    <Merge Id="VCRedistPolicy2005_32" SourceFile="$(var.RESOURCES)\MergeModules\VS2005\policy_8_0_Microsoft_VC80_CRT_x86.msm" DiskId="1" Language="0"/>
    <Merge Id="VCRedistPolicy2005_64" SourceFile="$(var.RESOURCES)\MergeModules\VS2005\policy_8_0_Microsoft_VC80_CRT_x86_x64.msm" DiskId="1" Language="0"/>
    -->

  </DirectoryRef>
</Fragment>

在我的 Product.wxs 中:

    <Feature ...>
        <ComponentRef Id="Client_Registry" />
        <?if $(var.Product) = xx ?>
            <MergeRef Id="VCRedist2005_32"/>
            <MergeRef Id="VCRedist2005_64"/>
            <!--
            <MergeRef Id="VCRedistPolicy2005_32"/>
            <MergeRef Id="VCRedistPolicy2005_64"/>
            -->
        <?endif?>
    </Feature>

我担心两个警告:

1>light.exe(0,0): warning LGHT1076: ICE25: Possible dependency failure as we do not find CRT.Policy.63E949F6_03BC_5C40_FF1F_C8B3B9A1E18E@0 v in ModuleSignature table
1>light.exe(0,0): warning LGHT1076: ICE25: Possible dependency failure as we do not find CRT.Policy.4F6D20F0_CCE5_1492_FF1F_C8B3B9A1E18E@0 v in ModuleSignature table

两条消息,因为我同时包含 32 位和 64 位合并模块。

我没有添加策略文件,因为wix 页面建议不要添加。MS 博客页面也支持这一点。但是,还有一些页面,比如这个,建议将它们包括在内。

所以,我不确定如何进行。是否应该包含策略文件?如果没有,为什么不呢?

4

1 回答 1

0

我一直更喜欢引导 vcredist 运行时。保持我的 MSI 干净整洁,没有任何问题。

于 2016-09-06T23:53:42.297 回答