WiX удаляет веб-сайт IIS по умолчанию перед созданием нового

Я создал пакет WiX для своего веб-сайта, и он отлично работает, за исключением того, что мой вновь созданный веб-сайт не запускается после установки. Это потому, что мой сайт зарегистрирован для использования *:80. IIS по умолчанию имеет настройку веб-сайта с той же привязкой.

Есть ли способ удалить веб-сайт по умолчанию (или, по крайней мере, остановить его) перед созданием моей новой привязки веб-сайта? Я не могу найти никакой информации по этому поводу в Интернете, но это похоже на распространенную проблему.


person Ilya Volodin    schedule 24.02.2014    source источник
comment
вы нашли ответ на это?   -  person JohnChris    schedule 13.02.2020
comment
Честно говоря, я не помню. Я уверен, что нашел обходной путь, так как установленное развертывание работало нормально, но это было так давно, что я не помню, что это было.   -  person Ilya Volodin    schedule 18.02.2020
comment
спасибо за ответ, я также нашел обходной путь, который я разместил в качестве ответа ниже   -  person JohnChris    schedule 20.02.2020


Ответы (2)


Я нашел, как это сделать, я думал, что поставлю ответ для любых усталых путешественников:

<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>

Мой ответ был основан на этой статье: здесь

person JohnChris    schedule 20.02.2020

То, что вы пытаетесь сделать, считается очень дурным тоном в мире установки программного обеспечения. Программа установки никогда не должна испортить целевую систему. Скорее всего, какой-то веб-сайт работает и перестает отвечать на запросы после завершения вашей программы установки.

Вы всегда должны предполагать, что перед запуском вашей программы установки целевая система находится в известном стабильном состоянии. Независимо от того, чем закончится ваша установка, вы должны оставить систему в стабильном известном состоянии. Вот почему существует концепция действий отката, которые отвечают за откат действий в случае, если нам нужно откатить всю установочную транзакцию.

Я бы порекомендовал вам пересмотреть программу установки в отношении такого поведения IIS. Например, всегда создавайте новый веб-сайт IIS с уникальным именем. Вы даже можете создать для него отдельный пул приложений, чтобы сделать его по-настоящему изолированным. Тогда будет намного проще удалить программное обеспечение — вы просто позволите установщику Windows выполнить свою работу по удалению того, что он установил.

person Yan Sklyarenko    schedule 11.03.2014
comment
Это только внутренняя установка для развертывания веб-сайта, над которым я работаю, в одно касание, поэтому я могу испортить существующие и работающие веб-сайты (на самом деле я хочу, чтобы они все были удалены). Отдельный пул приложений и уникальное имя не подойдут, так как два веб-сайта не могут одновременно работать на одном порту и одном IP-адресе без использования заголовков хоста. - person Ilya Volodin; 21.03.2014