Проект развертывания VS2010: проблемы с многопользовательской установкой и записью в реестре - PullRequest
0 голосов
/ 06 марта 2012

У меня проблемы с настройкой проекта развертывания в Visual Studio 2010. Я использую Windows 7 x64.Вот моя проблема:

Предполагается, что программа установки установит мою программу для всех пользователей.Во время установки три раздела реестра записываются в папку HKEY_LOCAL_MACHINE / Software / Something, содержащую переменные настройки для серийного номера, имени и организации в качестве значений - [COMPANYNAME], [PIDKEY], [USERNAME].

Что происходит:

Пользователь 1 (Администратор) устанавливает программное обеспечение, вводя свое имя пользователя, серийный номер и компанию.Все работает.Ключи могут быть найдены и значения считаны программой, используя Registry.LocalMachine.OpenSubKey(path).Первое, что я не получаю, это то, что я не могу найти записи реестра, используя regedit.exe.В любом случае, приведенный выше код находит их.

Теперь User2 (без прав администратора) пытается выполнить только что установленную программу.Установщик запускается снова, говоря: «Подождите ... для настройки ...».Пользовательские папки для User2 созданы правильно.Программа запущена, но ключи реестра больше не могут быть найдены программой.

Теперь, наконец, Пользователь1 пытается снова открыть программу.(Записи реестра больше не могут быть найдены.) Редактировать: Записи реестра действительно есть, но их значения пусты.

Итак, мои вопросы:

  1. Почему я не вижу записи реестра с regedit после установки, хотя они, очевидно, есть?

(2. Почему удаляются записи реестра, когда второй пользователь пытается запустить программу дляв первый раз и как мне этого избежать?)

Редактировать: 2. Почему в параметрах реестра заданы пустые строки, когда второй пользователь пытается запустить программу в первый раз и как я могу это сделать?избежать этого?

Приветствия из Окленда и спасибо!

Марк

Ответы [ 2 ]

2 голосов
/ 06 марта 2012
  1. Возможно, вам не хватает записей в реестре, если у вас установлен 32-битный пакет на компьютере x64. В этом случае записи реестра будут перенаправлены в «HKLM \ Wow6432Node ...». Это стандартное поведение для компьютеров с Windows x64. То же самое происходит с перенаправлением файлов в Program Files и Program Files (x86).

  2. Это странно. Может случиться, что при втором запуске программы установки, обычной операции автоматического восстановления, записи реестра будут удалены по ошибке. Чтобы получить более подробную информацию о действиях, выполненных во время второго запуска, я рекомендую вам включить постоянную регистрацию в ОС. http://support.microsoft.com/kb/223300

1 голос
/ 06 марта 2012

Интересно, почему функция Find не нашла ключи?

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

Очевидно, что «второй установщик» снова выполняет запись, не имея значений для этого. У вас есть идея, как это решить?

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

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

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...