Я создал установщик с помощью набора инструментов wix. Поскольку основное приложение - это веб-приложение, мне нужно установить веб-сертификат и отредактировать файл хоста. Для этого я написал командный файл, который отредактирует файл хоста и добавил свойство Wix, чтобы добавить WebCert.
Пакетный файл выглядит так:
FIND /C /I "site.site.com" %WINDIR%\system32\drivers\etc\hosts
IF %ERRORLEVEL% NEQ 0 (
ECHO. >>%WINDIR%\System32\drivers\etc\hosts
ECHO ^127.0.0.1 site.site.com>>%WINDIR%\System32\drivers\etc\hosts
ECHO. >>%WINDIR%\System32\drivers\etc\hosts
И в Component.wxs:
<iis:Certificate Id="rootWebCert"
Name="site"
Request="no"
BinaryKey="site.pfx"
StoreName="root"
PFXPassword="PASSWORD"
StoreLocation="localMachine"/>
Теперь это нормально работает на компьютерах с большей свободой, но в нашем домене есть некоторые компьютеры, которые заблокированы, и одна из функций, которые они блокируют, - это командная строка. Есть ли альтернативный способ отредактировать файл хоста или установить веб-сертификат? Я также сделал это в PowerShell, но для этого потребуется также установить PowerShell на компьютеры с ограниченным доступом.
EDIT:
Мне был предоставлен доступ к их машинам, и я подтвердил это после принятия EULA и Место установки, кнопка «Установить» запросила повышенные разрешения, и они смогли пройти аутентификацию, и установщик НЕ сообщал о каких-либо ошибках, но скрипт НЕ ПРОИЗВОДИЛ go через. Я обнаружил, что работа DID заключалась в открытии командной строки от имени администратора и запуске msiexec /i installer.msi
Я также добавил следующие строки в wxs:
<Condition Message="Installation requires Administrator privileges">
<![CDATA[Privileged]]>
</Condition>
Эта часть уже была там, просто забыл поместить в исходный пост:
<InstallExecuteSequence>
<Custom Action="CustomBatchFile" After="InstallFiles"><![CDATA[NOT Installed]]></Custom>
</InstallExecuteSequence>
<CustomAction Id="CustomBatchFile"
ExeCommand=""[SHORTCUTDIR]CustomBatch.bat" "[INSTALLFOLDER]""
Directory="SHORTCUTDIR"
Execute="deferred"
Return="asyncNoWait"/>