我遇到了一个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设置?
谢谢。
发布于 2011-10-19 02:46:27
在安装过程中设置的一些属性存储在隐藏的windows目录c:\windows\installer中-每个安装一个。在卸载/修复会话的日志中,您可以看到该缓存文件已打开,并且正在为新的卸载/修复会话设置属性。(或者,您可以从卸载/修复日志中找到此临时文件,并使用Orca打开它。在Orca中,在"Property“下,它将显示保存的所有安装属性值)。
根据上面的描述,我打赌设置自定义操作的属性没有存储,但COMPONENT_TYPE的值是可用的(与在自定义操作中设置SKIPCONFIGUREIIS的输入相同)。
如果是这样,那么只需使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的检查(通过对话框或某些其他属性)。
https://stackoverflow.com/questions/7726694
复制相似问题