尽管删除了IIS,但仍设置了IISMAJORVERSION和IISMINORVERSION

时间:2017-08-15 11:14:42

标签: iis wix wix3.10

我正在创建一个依赖于正在安装的IIS的安装程序。使用运行安装了Web服务器角色的Windows Server 2008 R2的虚拟机来测试我。

Before IIS removed

我的安装程序会检查是否使用此条件安装IIS;

<PropertyRef Id="IISMAJORVERSION" />
<PropertyRef Id="IISMINORVERSION" />
<Condition Message="Install requires IIS version 7.5 or later">
  <![CDATA[Installed OR (IISMAJORVERSION AND ((IISMAJORVERSION = "#7" AND IISMINORVERSION >= "#5") OR IISMAJORVERSION > "#7"))]]>
</Condition>

安装程序按预期运行,但是,我还想通过删除IIS并确保安装程序显示条件消息来测试条件。

我通过进入服务器管理器控制台并删除Web服务器角色(完整地)删除了IIS。

After IIS removed

当我重新运行安装程序并登录安装程序日志文件时,IISMAJORVERSION和IISMINORVERSION仍然分别设置了值#7和#5,尽管IIS不再安装。

AppSearch: Property: IISMAJORVERSION, Signature: IIsMajorVersionSearch
MSI (c) (88:F4) [14:25:16:687]: Note: 1: 2262 2: Signature 3: -2147287038 
MSI (c) (88:F4) [14:25:16:687]: PROPERTY CHANGE: Adding IISMAJORVERSION property. Its value is '#7'.
AppSearch: Property: IISMINORVERSION, Signature: IIsMinorVersionSearch
MSI (c) (88:F4) [14:25:16:703]: Note: 1: 2262 2: Signature 3: -2147287038 
MSI (c) (88:F4) [14:25:16:703]: PROPERTY CHANGE: Adding IISMINORVERSION property. Its value is '#5'.

使用WIX v3.10.3.3007构建安装程序。

IIS是否卸载不删除它应该的注册表项,或者这是一个WIX问题?

更新1

根据HKLM \ SOFTWARE \ Microsoft \ InetStp文件夹中注册表项MajorVersion和MinorVersion的值填充WIX属性IISMAJORVERSION和IISMINORVERSION。删除Web服务器角色时,实际上只删除了此文件夹中的两个注册表项(MetabaseSetMajorVersion和MetabaseSetMinorVersion)。所有其他的仍然包括WIX使用的两个。

只有在删除Windows进程激活服务后,才会删除HKLM \ SOFTWARE \ Microsoft \ InetStp中的其他注册表项。

考虑到这一点,我不确定使用IISMAJORVERSION并且IISMINORVERSION总是可靠的,因为在没有安装IIS的情况下可以恢复值。

0 个答案:

没有答案