我遇到了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设置的好方法?
感谢。
答案 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(通过对话框或其他属性)的检查。