Как работает словарь saveState в программе установки? - PullRequest
6 голосов
/ 25 августа 2009

Я изо всех сил пытаюсь найти документацию о том, как словарь stateSaver / saveState работает для установщика Windows, в переопределениях Install и UnInstall может кто-нибудь помочь.

В моих установщиках CustomAction я писал в записи реестра, каждый раз добавляя некоторые его детали в stateSaver. Я предполагал, что это было учтено при удалении, но как?

Я думаю, что словарь stateSaver записывается в файл при установке, и при удалении содержимого этого файла .InstallState читается и используется для установки найденных записей.

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

Вот пример того, что делает Install

RegistryKey expressionEvaluatorVersionKey = expressionEvaluatorKey.CreateSubKey(packageVersion);

Это создание дополнительного ключа для ключа, добавленного с помощью установщика Windows. Как я должен удалить этот Sub Key при удалении?

1 Ответ

1 голос
/ 15 декабря 2011

Я не уверен, что installState - это ваша проблема. Это просто файл, содержащий различные пары ключ-значение, я не думаю, что там что-то происходит с умом.

Это звучит для меня как (встроенный) процесс деинсталлятора: «Мне нужно удалить этот ключ, но он не пустой, поэтому я собираюсь его оставить».

Не могли бы вы поместить все создание ключа / записи в реестре (и, как следствие, удаление всех ключей / записей) в dll Custom Action?

Другая проблема, с которой я столкнулся при установке InstallState - и именно поэтому я стараюсь ее избегать, - это то, что люди не могут прийти и удалить файл installState. В зависимости от того, как вы написали свое действие по удалению, это может означать, что вы никогда не получите чистую деинсталляцию своей программы, потому что вы получите исключения, когда попытаетесь прочитать то, что, как вы ожидаете, будет в словаре, который отсутствует. *

Поскольку вы, похоже, уже используете специальное действие dll для выполнения этой работы, надеюсь, мое предложение не столь обременительно?

...