Я использую Inno Setup для нашего драйвера WinDRBD, который является портом драйвера Linbit DRBD от Linux до Windows (https://github.com/LINBIT/windrbd). Мы используем Inno-setup для установки / удаления, и он работает очень хорошо.
Одна вещь, которую я заметил, заключается в том, что если пользователь устанавливает одну и ту же версию дважды (или обновляет ее до более новой версии), сценарий в разделе UninstallRun
запускается несколько раз (один раз для каждой установки) позже, когда пользователь выбираетудалить программу. Есть ли способ сделать это только один раз, даже если пользователь установил несколько обновлений?
В настоящее время я использую:
[UninstallRun]
Filename: "C:\Windows\sysnative\cmd.exe"; Parameters: "/c uninstall-windrbd.cmd"; \
WorkingDir: "{app}"; Flags: runascurrentuser waituntilterminated shellexec
(примечание: sysnative
дело в том, что Inno Setup 32-битная, но приложение 64-битное, иначе установка INF внутри скрипта будет делать неправильно).
Это просто второстепенная вещь, мы запускаем INF-файлУдаление, которое отображает окно сообщения при запуске 2 раза +. Может быть, я пропускаю какой-то флаг?