Как перейти от установщика .msi к сборщику электронов (nsis) - PullRequest
0 голосов
/ 05 марта 2019

В настоящее время у меня есть приложение в поле, которое было распространено как установщик .msi (построено с Wix ).Я только что закончил переносить это приложение на Electron, чтобы воспользоваться всеми новейшими и лучшими функциями, включая использование Electron Builder и Auto Updates.

Любые гуру wix / msi знают, как лучше всего удалить старую msi и запустить новую программу установки?Решения, которые я нашел, включают поиск в реестре Windows, чтобы найти UIID MSI, а затем с помощью msiexec.

Можно ли просто создать новую версию MSI, которая очищает все?

1 Ответ

0 голосов
/ 05 марта 2019

Если я правильно понимаю, вы хотите перейти с формата MSI на NSIS?Здесь есть статья на эту тему: https://nsis.sourceforge.io/Uninstalling_a_previous_MSI.


Однако я бы посоветовал вам найти код продукта для MSI и вызвать msiexec.exe с кодом продукта и собственной строкой удаления (не той, которая была получена из реестра, как показано в приведенной выше документации).Таким образом, вы можете добавить несколько конструкций, чтобы предотвратить самопроизвольную перезагрузку и обеспечить правильную тихую работу .Этот подход описан ниже.


Удаление MSI : Вы можете удалить предыдущую версию MSI, выполнив команду удаления любым из следующих способов: Удаление файла MSI из командной строки без использования msiexec .

Поиск кода продукта : GUID продукта MSI можно найти следующим образом: Как найти GUID продукта установленной установки MSI?

Командная строка : объединение подхода 3.5 из первой ссылки выше и продуктакод, найденный с использованием информации во второй ссылке, вы можете использовать такую ​​командную строку для вызова из установщика NSIS:

msiexec.exe /x {11111111-1111-1111-1111-11111111111X} /QN /L*V "C:\msilog.log" REBOOT=ReallySuppress

Краткое описание параметров :

/X = run uninstall sequence
{11111111-1111-1111-1111-11111111111X} = product guid of app to uninstall
/QN = run completely silently
/L*V "C:\msilog.log"= verbose logging at path specified
REBOOT=ReallySuppress = prevent unexpected reboot of computer

ExecWait : NSIS требует свой собственный особый формат команды: Запуск MSIEXEC в сценарии NSIS с установочными переключателями .Еще не проверял это, но предложение:

StrCpy $R0 "{11111111-1111-1111-1111-11111111111X}";  the MSI's ProductID of my package
ExecWait '"msiexec.exe" /x $R0 /QN REBOOT=ReallySuppress'

Проверьте здесь для тонкой настройки командной строки: https://nsis.sourceforge.io/Uninstalling_a_previous_MSI.


Ссылки :

...