卸载msi删除apppools

时间:2012-08-14 07:05:12

标签: iis-7 wix windows-installer

我有一个wcf服务项目msi。我正在通过Wix生成MSI并分配appool。但是当我卸载msi时。即使是具有该apppool引用的其他虚拟目录,应用程序池也会被删除。

如果有人知道请帮助我...

3 个答案:

答案 0 :(得分:0)

如果您粘贴用于在WiX中使用AppPool的代码,则可能更容易找到问题。我假设您将<iis:WebAppPool>元素嵌套在<Component>元素下。在这种情况下,应用程序池将在安装期间创建,并在卸载期间删除。即使它在安装时就在那里,它仍然会被删除。

您应该在<iis:WebAppPool>ProductModule元素下找到Fragment。在这种情况下,它将作为定位器,允许其他元素引用它,但不安装/卸载。

查看element description了解更多详情。 <WebSite> element article中描述了元素 locator 行为的技巧。

答案 1 :(得分:0)

如果共享该应用程序池的虚拟目录位于不同的MSI中,则需要了解组件规则和共享组件的概念。这样,MSI将引用计算组件并将其删除,并在适当时删除它。

否则我通常会创建更多应用池以避免冲突。

答案 2 :(得分:0)

除了另外两个答案。在我的情况下,我希望WebAppPool在卸载后保持不变。因此,如果您想在msi中安装WebAppPool并在卸载后保留,则可以添加&#34; Permanent&#34;归因于你的&#34;组件&#34;标记并将其值设置为&#34;是&#34;像这样:

<Component Id="RepoAppPoolCmp" Guid="{B676B577-FEDB-44BF-9096-1510D2A29E38}" KeyPath="yes" Permanent="yes">
    <iis:WebAppPool Id="RepoAppPool" ManagedRuntimeVersion="v4.0" IdleTimeout="0" RecycleMinutes="0" Name="[WEB_APP_POOL_IDENTITY]" Identity="networkService" />
</Component>

这应该成交。