我在Wix安装程序中使用以下代码。
<DirectoryRef Id="TARGETDIR">
<Merge Id="CRT" Language="0" SourceFile=".\resources\Microsoft_VC90_CRT_x86.msm" DiskId="1" />
<Merge Id="ATL" Language="0" SourceFile=".\resources\Microsoft_VC90_ATL_x86.msm" DiskId="1" />
<Merge Id="MFC" Language="0" SourceFile=".\resources\Microsoft_VC90_MFC_x86.msm" DiskId="1" />
<Merge Id="MFCLOC" Language="0" SourceFile=".\resources\Microsoft_VC90_MFCLOC_x86.msm" DiskId="1" />
<Merge Id="OpenMP" Language="0" SourceFile=".\resources\Microsoft_VC90_OpenMP_x86.msm" DiskId="1" />
<Merge Id="CRT Policy" Language="0" src=".\resources\policy_9_0_Microsoft_VC90_CRT_x86.msm" DiskId="1" />
<Merge Id="MFC Policy" Language="0" src=".\resources\policy_9_0_Microsoft_VC90_MFC_x86.msm" DiskId="1" />
</DirectoryRef>
<Feature Id="VCRedist" Title="Visual C++ 9.0 Runtime" AllowAdvertise="no" Display="hidden" Level="1">
<MergeRef Id="CRT" />
<MergeRef Id="CRT Policy"/>
<MergeRef Id="ATL" />
<MergeRef Id="MFC" />
<MergeRef Id="MFC Policy"/>
<MergeRef Id="MFCLOC" />
<MergeRef Id="OpenMP" />
</Feature>
我觉得使用此代码构建的msi适用于许多XP系统但在Vista中失败。程序和快捷方式正在Vista中正确创建。
在Vista中我应该怎么做才能安装这些可再发行组件?我不想用bootstrapper创建一个setup.exe。我的要求只列出了一个msi中的所有内容。
任何代码示例都会对我有所帮助。
提前感谢任何有价值的帮助。
此致
tvks
答案 0 :(得分:0)
我认为c ++ redist是推荐使用MS预先打包的msi安装的软件包之一。此外,我非常确定您安装程序中包含的所有合并模块都需要相应的策略合并模块,而不仅仅是crt和mfc。
另一件事是检查你的msi是否在Vista中正确升级(UAC提示)
答案 1 :(得分:0)
在我目前的项目中,我们安装VC90可再发行组件的方式与您在帖子中描述的方式相同。我们使用相同的属性/值等。但是,我们不包含任何策略模块。它适用于XP和Vista。
Wix教程指出:
通常不需要将策略MSM作为安装的一部分包含在内。
因此,如果您没有尝试过,请创建一个没有任何策略的安装,看看它是否更好。