我在我的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中正确创建,如XP。
我应该在Vista中做什么来安装这些可再发行的软件??我不想创建一个带引导程序的setup.exe。我的要求是所有的东西都只在一个msi中。
任何代码示例都会对我有很大帮助。
提前感谢您的任何宝贵帮助。
致以敬意,
tvks
发布于 2009-10-13 17:05:34
我想c++ redist是推荐使用微软预装的msi安装的软件包之一,而且我非常确定你安装程序中包含的所有合并模块都需要相应的策略合并模块,而不仅仅是crt和mfc。
在Vista中检查msi是否正确提升的另一件事(UAC提示)
发布于 2009-10-22 13:43:15
在我目前的项目中,我们按照您在帖子中描述的相同方式安装VC90可再发行程序。我们使用相同的属性/值等。但是,我们不包含任何策略模块。它可以在XP和Vista下运行。
Wix教程指出:
通常不需要将策略MSMs作为安装的一部分。
因此,如果您还没有尝试过,那么可以在没有任何策略的情况下创建一个安装,看看这样做是否能更好地工作。
https://stackoverflow.com/questions/1554622
复制相似问题