#inno-setup #uninstallation
#inno-setup #удаление
Вопрос:
Вот мой [UninstallRun]
раздел:
[UninstallRun]
Filename: {dotnet40}regasm.exe; Parameters: /u MSAToolsLibrary_x86.dll; WorkingDir: {app}; Flags: runhidden;
Filename: {dotnet4064}regasm.exe; Parameters: /u MSAToolsLibrary_x64.dll; WorkingDir: {app}; Flags: runhidden; Check: IsWin64;
Filename: {dotnet40}regasm.exe; Parameters: /u MSAToolsGMailLibrary_86.dll; WorkingDir: {app}MSAToolsGMailLibrary; Flags: runhidden
Filename: {dotnet4064}regasm.exe; Parameters: /u MSAToolsGMailLibrary_64.dll; WorkingDir: {app}MSAToolsGMailLibrary; Flags: runhidden; Check: IsWin64;
При компиляции с помощью Inno Setup 6.1.1 я получаю это предупреждение:
Предупреждение: есть
[UninstallRun]
записи раздела безRunOnceId
параметра. Назначая строку дляRunOnceId
, вы можете гарантировать, что конкретная[UninstallRun]
запись будет выполнена только один раз во время удаления.[UninstallRun]
Для получения дополнительной информации см. Раздел «» в файле справки.
Я просмотрел справку о RunOnceId
том, где в ней указано:
Допустимо только в
[UninstallRun]
разделе. Если одно и то же приложение установлено более одного раза, записи «run» будут дублироваться в файле журнала удаления. Назначая строку дляRunOnceId
, вы можете гарантировать, что конкретная[UninstallRun]
запись будет выполнена только один раз во время удаления. Например, если две или более записей «выполнить» в журнале удаления имеютRunOnceId
значение «DelService», будет выполнена только последняя запись сRunOnceId
значением «DelService»; остальные будут проигнорированы. Обратите внимание, чтоRunOnceId
сравнения чувствительны к регистру. Если вы не назначите строкуRunOnceId
, компилятор предупредит вас об этом, что можно отключить с помощьюMissingRunOnceIdsWarning
.
Я вижу, что могу отключить предупреждение. Но я хотел знать, действительно ли мне нужно использовать этот параметр в моей настройке, потому что я никогда не делал этого до сих пор.
Ответ №1:
Вы должны использовать параметр, как следует из предупреждения.
Если вы этого не сделаете, при каждом обновлении (если ваш установщик не удалит предыдущую версию) новое выполнение ваших [UninstallRun]
команд будет помещено в очередь. Таким образом, если вы устанавливаете, а затем обновляете 9 раз, все ваши команды удаления будут выполняться 10 раз при удалении. Конечно, в вашем случае это означает, что каждая ваша regasm /u
команда завершится ошибкой 9 раз. Не имеет большого значения, но если пользователь проверит журнал удаления (на случай, если у него возникнут проблемы), он увидит множество сбоев, что может ввести их в заблуждение.
Обратите внимание, что вы не можете исправить это ретроспективно. Команды удаления, поставленные в очередь предыдущими установщиками, будут по-прежнему выполняться для каждой прошлой установки. Но опять же, если бы это было серьезной проблемой, вы, вероятно, уже заметили бы.
Комментарии:
1. Документация: jrsoftware.org/ishelp/index.php?topic=runsection