Записать пользовательское строковое значение в ПРОГРАММНОЕ ОБЕСПЕЧЕНИЕ \ Microsoft \ Windows \ CurrentVersion \ Удалить с помощью InnoSetup - PullRequest
0 голосов
/ 18 февраля 2020

Во время установки я хотел бы записать пользовательское строковое значение в автоматически созданный раздел реестра HKLM\SOFTWARE\Microsoft\Windows\CurrentVersion\Uninstall\MyApp.2020_is1

Я пытался сделать это в разделе [Registry] моего сценария iss, но, похоже, быть проигнорированным.

Root: HKLM; Subkey: "SOFTWARE\Microsoft\Windows\CurrentVersion\Uninstall\{#MyAppName}.{#MyAppVersion}_is1"; ValueData: "some tag"; Flags: uninsdeletekey; ValueType: string; ValueName: "CustomTag"

Это вообще обескураживает или я что-то упускаю? У меня есть PrivilegesRequired=admin в разделе [Setup].

Обновление для лучшего описания того, что я пытаюсь сделать

С возможностью установки нескольких сборок Вместе с моим приложением я хочу дать пользователю возможность добавить описательный тег, чтобы он мог идентифицировать сборку не только по номеру сборки, но и по тегу.

Поскольку я в любом случае ищу в реестре предыдущие сборки, я пытался добавить пользовательское значение в ключ удаления вместо необходимости ссылаться на другой ключ, чтобы найти пользовательский тег.

1 Ответ

0 голосов
/ 19 февраля 2020

Запись Uninstall создается как один из последних шагов установки. Так же и после обработки раздела [Registry]. И когда запись создается, ее предыдущее содержимое полностью удаляется, включая ваше some tag значение.

Как уже прокомментировал @Bill_Stewart, правильный способ - использовать SetPreviousData / GetPreviousData.

Если вы действительно хотите использовать свой собственный код для записи записи, вам придется сделать это из Pascal Сценарий в CurStepChanged(ssPostInstall) событие (срабатывает после создания записи Uninstall).


Если вы хотите, чтобы пользователи могли различать guish установку, тег должен go to AppName или AppVerName или UninstallDisplayName.

Если необходимо разрешить параллельные установки, установки должны иметь разные AppId - это часть имени ключа деинсталлятора, поэтому дополнительный тег не требуется.

...