首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >WiX msxml 6先决条件

WiX msxml 6先决条件
EN

Stack Overflow用户
提问于 2015-02-11 10:30:29
回答 1查看 883关注 0票数 0

我正在为我们的软件创建一个WiX安装程序,这需要msxml 6。如果我正确理解,msxml 6是从XP SP3开始随Windows提供的,但是由于我们的软件支持所有版本的XP,我想客户可能不会安装msxml 6;因此,如果还没有安装,我希望msxml 6由安装程序来安装。

我找到了这个页面,它显示了如何检测msxml 6是否安装在计算机上,但它没有说明哪个版本(SP1、SP2等)。已经安装了。

我的问题是,如何正确检测msxml 6是否已安装,如果未检测到,如何安装最新版本?

这就是我现在用于执行检测的内容(我在上面的链接中找到的内容和我用于其他先决条件的内容的组合):

代码语言:javascript
复制
<!-- MSXML6 SP1 (x86) -->
<util:RegistrySearch Root="HKCR" Key="Msxml2.DOMDocument.6.0" Format="raw"
  Variable="MsXml6x86Installed" />

<PackageGroup Id="MsXml6x86">
  <MsiPackage Id="MsXml6x86" Cache="no" Compressed="yes" Permanent="yes" Vital="yes"
    SourceFile="$(var.PrerequisitesPackagesRootPath)\msxml6_SP1_x86\msxml6_x86.msi"
    InstallCondition="(VersionNT &lt; v6.0) AND (NOT MsXml6x86Installed)" />
</PackageGroup>

<!-- MSXML6 SP1 (x64) -->
<util:RegistrySearch Root="HKCR" Key="Msxml2.DOMDocument.6.0" Format="raw"
  Variable="MsXml6x64Installed" Win64="yes" />

<PackageGroup Id="MsXml6x64">
  <MsiPackage Id="MsXml6x64" Cache="no" Compressed="yes" Permanent="yes" Vital="yes"
    SourceFile="$(var.PrerequisitesPackagesRootPath)\msxml6_SP1_x64\msxml6_x64.msi"
    InstallCondition="(VersionNT64 &lt; v6.0) AND (NOT MsXml6x64Installed)" />
</PackageGroup>

在我的捆绑(X86)中:

代码语言:javascript
复制
<Bundle>
  ...
  <Chain>
    <PackageGroupRef Id="MsXml6x86"/>
    <PackageGroupRef Id="Vc2010Sp1x86" />
    <PackageGroupRef Id="Netfx35Sp1" />
    <PackageGroupRef Id="Netfx4Full" />
    ...
  </Chain>
</Bundle>

当我启动我的安装程序时,我在日志文件中得到以下输出:

代码语言:javascript
复制
[21E4:3F00][2015-02-11T09:57:31]i000: Setting string variable 'MsXml6x86Installed' to value 'XML DOM Document 6.0'
[21E4:3F00][2015-02-11T09:57:31]i101: Detected package: MsXml6x86, state: Absent, cached: None

因此,可以找到我搜索的注册表项,这表明msxml 6存在,但实际包不存在。我想原因是当我搜索msxml6.dll时,我的Win 7计算机似乎安装了SP3,而我在安装程序中使用的msxml包是用于SP1的吗?但这就是我不知道该做什么的地方;在Win 7测试计算机上,默认情况下安装msxml 6 SP3,而我们的Win XP SP3测试计算机默认安装msxml 6 SP2。我应该在安装程序中使用哪个msxml包,以便从XP开始为所有版本的Windows获得解决方案?我无法找到下载链接到SP3或SP2 om微软的网站。

我很感谢你的帮助。

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2015-02-11 14:08:04

我不相信你链接的那一页是经过深思熟虑的。您需要做的(一般)是观察任何给定prereq的足迹,并就如何检测它做出最佳选择。对于MSXML6,我使用ORCA编辑了MSI,并在注册表中找到了以下内容:

软件\Microsoft\MSXML6.0Parser和SDK\CurrentVersion PatchLevel = 6.00.3883.8

我会去找不同的sp级别的MSI,看看你是否找到一个趋势,然后在你的逻辑中使用它。

否则,在您的应用程序中添加XP SP3的业务/工程需求是非常合理的方法。如果客户要运行旧操作系统,他们至少应该使用最新的SP。微软已经切断了XP的Windows,你是在非常坚实的基础上,不再支持这个操作系统。结果将是一个更简单、更可靠的安装程序,开发和测试成本更低。

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/28452013

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档