禁用在卸载Wix安装程序时启动IIS7配置事务

时间:2011-10-11 13:20:45

标签: iis wix

我遇到了Wix安装程序的问题,它包含三个不同的功能集(客户端/开发人员和服务器)。

选择“客户端”后,安装程序不需要执行IIS中任何未包含在此功能中的组件中的操作。

安装时我没有遇到任何问题,因为我添加了自定义操作

<!-- Only perform the IIS Configuration if we have installed the Admin Application-->
<Custom Action="SkipIISCA" Before="InstallValidate">
  <![CDATA[COMPONENT_TYPE = 2]]>
</Custom>

仅在安装“客户端”组件类型时运行。自定义操作将SKIPCONFIGUREIIS属性设置为1

在安装程序上执行卸载修复时会发生此问题。在卸载或修复产品时似乎正在尝试IIS配置,并且似乎没有运行自定义操作来禁用此行为。

根据注册表设置,是否有一种在卸载/修复时设置SKIPCONFIGUREIIS设置的好方法?

感谢。

1 个答案:

答案 0 :(得分:0)

安装期间设置的某些属性存储在隐藏的Windows目录c:\ windows \ installer中 - 每个安装一个。在卸载/修复会话的日志中,您可以看到已打开缓存文件并为新的卸载/修复会话设置了属性。 (或者,您可以从卸载/修复日志中找到此临时文件,并使用Orca打开它。在Orca中,在“Property”下,它将显示已保存的任何安装属性的值。)

基于以上描述,我打赌不存储自定义操作的属性,但COMPONENT_TYPE的值可用(用于在自定义操作中设置SKIPCONFIGUREIIS的输入相同)。 / p>

如果是这样,那么只需基于这些属性进行IIS配置操作:

<Custom Action="Your_Configure_IIS_Action" Before="InstallFinalize">
(NOT SKIPCONFIGUREIIS ) OR (COMPONENT_TYPE = 2)</Custom>

如果您不希望在卸载/修复期间对任何功能集进行ConfigureIIS,那么只需使用以下属性:

<Custom Action="Your_Configure_IIS_Action" Before="InstallFinalize">
(NOT UPGRADINGPRODUCTCODE) AND (REMOVE="ALL")</Custom>

要考虑的另一件事是原始安装程序是否处于一个级别 - 例如客户端,卸载/修复由服务器级别的人员完成。存储原始安装的component_type。在这种情况下,您可以考虑在卸载/修复期间添加一个关于如何确定component_type(通过对话框或其他属性)的检查。