我有一个 wcf 服务项目 msi。我正在通过 Wix 生成 MSI 并分配 appool 。但是当我卸载 msi 时。即使其他具有该 apppool 引用的虚拟目录,应用程序池也将被删除。
如果有人知道请帮助我..
我有一个 wcf 服务项目 msi。我正在通过 Wix 生成 MSI 并分配 appool 。但是当我卸载 msi 时。即使其他具有该 apppool 引用的虚拟目录,应用程序池也将被删除。
如果有人知道请帮助我..
如果共享该应用程序池的虚拟目录位于不同的 MSI 中,则需要阅读组件规则和共享组件的概念。这样 MSI 将引用计数组件并在适当时将其及其资源删除。
否则我通常只是创建更多的应用程序池以避免冲突。
除了其他两个答案。我的情况是,我希望 WebAppPool 在卸载后保留。因此,如果您想在您的 msi 中安装 WebAppPool 并在卸载后保留,您可以将“永久”属性添加到“组件”标签并将其值设置为“是”,如下所示:
<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>
这应该达成协议。
如果您粘贴用于在 WiX 中使用 AppPool 的代码,则可能更容易找到问题。我假设您将元素嵌套在<iis:WebAppPool>
元素下<Component>
。在这种情况下,应用程序池将在安装期间创建,并在卸载期间删除。即使它在安装时已经存在,它仍然会被删除。
您应该在or or元素<iis:WebAppPool>
下找到。在这种情况下,它将用作定位器,允许其他元素引用它,但不会被安装/卸载。Product
Module
Fragment
查看元素描述以获取更多详细信息。element article中描述了元素定位器行为的技巧。<WebSite>