Inno Setup: запустить скрипт удаления только один раз - PullRequest
0 голосов
/ 18 октября 2018

Я использую 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 раза +. Может быть, я пропускаю какой-то флаг?

1 Ответ

0 голосов
/ 14 ноября 2018

Добавление RunOnceId: "Uninstall" (где "Uninstall" - это просто случайный тег, вы также можете использовать foobar) к строке удаления делает свое дело.

Итак,

[UninstallRun]
Filename: "MyUninstallProgram.exe"; Flags: runascurrentuser waituntilterminated runhidden; RunOnceId: "Uninstall"

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

...