Полностью бесшумный установщик MSI с необходимыми условиями

У меня есть простое приложение C #, для которого мне нужно создать тихий установщик. Я использую установщик Visual Studio (на основе MSI). Поскольку это приложение C #, установщик должен установить .NET framework в качестве предварительных условий.

Проект установки в моем решении создает 2 файла: setup.exe и app.msi, загрузчик и файлы MSI.

Также: установка всегда будет выполняться с повышенными привилегиями, это безопасное предположение.

Итак, я пытался запустить как setup.exe, так и app.msi таким образом, чтобы установка происходила полностью в автоматическом режиме в случаях, когда .NET установлен, но не установлен.

msiexec /i app.msi /qn

Это работает незаметно на машине, на которой установлен .NET, и незаметно дает сбой на машине, на которой не установлена ​​.NET.

Другие комбинации работают не беззвучно или отображают всплывающие окна.

Так можно ли сделать так, чтобы процесс установки был бесшумным? Или, по крайней мере, позвольте установке .NET показывать всплывающие окна, но само приложение должно молчать (кроме того, не должно быть других всплывающих окон, таких как «Программа установки инициализирует компоненты» и т. Д., Которые не связаны с установкой .NET)


person Alex    schedule 28.01.2013    source источник


Ответы (1)


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

Дешевый способ сделать это - использовать сценарий (даже такой же простой, как пакетный файл) в качестве загрузчика: определить .NET, запустить установочный пакет .NET, если он отсутствует, затем запустить установку основного пакета:

@echo off
rem this key/value is how WiX detects .NET 4.0 Full installation
reg query "HKLM\Software\Microsoft\NET Framework Setup\NDP\v4\Full" /v InstallPath >NUL 2>&1
rem sets ERRORLEVEL==0 if present, ERRORLEVEL==1 if absent

rem if .NET not found, install it:
if ERRORLEVEL 1 dotNetFx40_Full_setup.exe

rem now install main program
msiexec /i app.msi /qn

Предостережения:

  • Имена ключей реестра различаются для разных версий .NET.
  • некоторые системные администраторы стирают или отключают команду reg.exe по соображениям безопасности.
  • иногда установщик .NET перезагружается на вас, и вы не попадете к основному пакету с первой попытки
  • только что установленный .NET Framework иногда не активируется полностью до перезагрузки
  • Файлы .bat очень легко взломать. Так что VBScript или JScript или что-то еще. Не используйте их с реальными покупателями. Хороший загрузчик (например, WiX burn) имеет встроенные функции обнаружения .NET и более непрозрачен для черных шляп.
person Davidson Corry    schedule 05.03.2013