我为我的网站创建了一个WiX软件包,它工作正常,但我新创建的网站在安装后无法启动。那是因为我的网站注册使用*:80。默认情况下,IIS的网站设置具有相同的绑定。
在创建新的网站绑定之前,有没有办法删除默认网站(或至少停止它)?我似乎无法在互联网上找到任何相关信息,但这似乎是一个常见的问题。
答案 0 :(得分:0)
在软件安装领域,您尝试做的事情被认为是一种非常糟糕的品味。安装程序绝不能弄乱目标系统。最有可能是某些网站启动并运行,在安装程序完成后,这些网站将无法响应。
您应该始终假设在安装程序启动之前,目标系统处于某种已知的稳定状态。无论安装如何结束,都应该让系统处于稳定的已知状态。这就是为什么存在回滚动作的概念,它们负责在我们需要回滚整个安装事务时回滚动作。
我建议您修改有关IIS行为的安装程序。例如,始终使用唯一名称创建一个新的IIS网站。您甚至可以为它创建一个单独的应用程序池,使其真正隔离。然后卸载软件会容易得多 - 你只需让Windows Installer完成卸载已安装软件的工作。
答案 1 :(得分:0)
我找到了解决方法,我想为所有疲倦的旅行者提供一个答案:
<CustomAction Id="RegisterCommand"
Property="RegisterPowerShellProperty"
Execute="immediate"
Value=""C:\Windows\System32\WindowsPowerShell\v1.0\powershell.exe" -ExecutionPolicy ByPass -NoLog -InputFormat None -NoProfile -command "Remove-IISSite -Name 'Default Web Site' -Confirm:$false""/>
<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