在创建新网站之前,WiX会删除默认的IIS网站

时间:2014-02-24 16:14:01

标签: iis wix wix3.7

我为我的网站创建了一个WiX软件包,它工作正常,但我新创建的网站在安装后无法启动。那是因为我的网站注册使用*:80。默认情况下,IIS的网站设置具有相同的绑定。

在创建新的网站绑定之前,有没有办法删除默认网站(或至少停止它)?我似乎无法在互联网上找到任何相关信息,但这似乎是一个常见的问题。

2 个答案:

答案 0 :(得分:0)

在软件安装领域,您尝试做的事情被认为是一种非常糟糕的品味。安装程序绝不能弄乱目标系统。最有可能是某些网站启动并运行,在安装程序完成后,这些网站将无法响应。

您应该始终假设在安装程序启动之前,目标系统处于某种已知的稳定状态。无论安装如何结束,都应该让系统处于稳定的已知状态。这就是为什么存在回滚动作的概念,它们负责在我们需要回滚整个安装事务时回滚动作。

我建议您修改有关IIS行为的安装程序。例如,始终使用唯一名称创建一个新的IIS网站。您甚至可以为它创建一个单独的应用程序池,使其真正隔离。然后卸载软件会容易得多 - 你只需让Windows Installer完成卸载已安装软件的工作。

答案 1 :(得分:0)

我找到了解决方法,我想为所有疲倦的旅行者提供一个答案:

<CustomAction Id="RegisterCommand"
              Property="RegisterPowerShellProperty"
                                Execute="immediate"
                                Value="&quot;C:\Windows\System32\WindowsPowerShell\v1.0\powershell.exe&quot; -ExecutionPolicy ByPass -NoLog -InputFormat None -NoProfile -command &quot;Remove-IISSite -Name 'Default Web Site' -Confirm:$false&quot;"/>
<CustomAction Id="RegisterPowerShellProperty"
              BinaryKey="WixCA"
              DllEntry="CAQuietExec64"
              Execute="deferred"
              Return="check"
              Impersonate="no" />

<InstallExecuteSequence>
        <Custom Action="RegisterCommand" After="CostFinalize">NOT Installed</Custom>
       <Custom Action="RegisterPowerShellProperty" After="InstallFiles">NOT  Installed</Custom>     
</InstallExecuteSequence>

我的回答基于本文:here