Запуск приложений для пользователя и установщика Windows - PullRequest
1 голос
/ 26 апреля 2010

У меня есть приложение, которое установлено для каждой машины (поскольку оно использует службу). Одна часть приложения представляет собой приложение в системном трее, которое позволяет вошедшему в систему пользователю контролировать операции службы. Я пытаюсь выяснить, как лучше установить это приложение для монитора.

Каждый отдельный пользователь должен иметь возможность настроить, хочет ли он / она запускать приложение монитора при входе в систему. Это означает, что ключ HKLM / Software / Microsoft / Windows / Run отсутствует - это разрешает настройку только для всех пользователей.

Конечно, есть соответствующий HKCU-ключ, однако, если его просто установить на этот ключ, это будет только для пользователя, который устанавливает приложение.

SO вопрос Запускать приложение при запуске для всех пользователей, но также разрешать настройку для каждого пользователя (Windows) относится к технике простого использования настраиваемого пользователем ключа или подобного, который проверяется при запуске -приложение, чтобы определить, следует ли запускать. Но это означает, что приложение должно запускаться, чтобы проверить значение, и я бы предпочел не увеличивать скорость запуска пользователя, если я могу избежать этого. Преимущество такого подхода заключается в том, что при удалении можно удалить regkey.

Другим способом выполнения части установки может быть использование Active Setup для создания ключа HKCU при входе в систему, однако это не документировано, и мне кажется, что простого способа удаления этого ключа нет, если приложение удалено? Я бы предположил, что если оставить значения реестра под ключом Run для HKCU, это может создать проблемы для пользователей после удаления.

Существует ли стандартный способ обработки приложений, запускаемых пользователем, с помощью установщика Windows? Особенно в отношении того, как удалить их позже?

Ответы [ 3 ]

1 голос
/ 10 июня 2010

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

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

Если вы используете ключ реестра HKCU, ваш установщик MSI должен иметь компонент с его «файлом ключа» в качестве записи HKCU - поэтому, таким образом, при первом запуске программы новым пользователем установщик Windows сам исцелить, чтобы написать эти записи. Одной из этих записей будет значение HKCU / Software / Microsoft / Windows / Run, но , а не значение ключа, потому что вы хотите, чтобы пользователи могли удалить его, а не возвращать его каждый раз, когда они запустить программу! Затем вы захотите, чтобы ваша программа имела возможность удалить значение автозапуска.

Если вы используете ActiveSetup (который я рекомендовал бы, потому что он простой и он "просто работает"), то вам может быть проще создать простое приложение (или VBScript или подобное), которое запрашивает пользователя если они хотят, чтобы программа монитора запускалась автоматически. Таким образом, ваш ActiveSetup запустит программу / скрипт приглашения, а программа-приглашение создаст значение HKCU / Software / Microsoft / Windows / Run или, что еще лучше, просто ярлык в пользовательском меню Пуск \ Programs \ Startup.

0 голосов
/ 26 апреля 2010

Полагаю, в этом случае вы бы использовали HKLM / Software / Microsoft / Windows / Run. Функция запуска приложения монитора при запуске или не принадлежит приложению монитора, а не установщику. При входе в систему приложение монитора может определить, запущено ли приложение монитора впервые, и предоставить пользователю возможность всегда запускать приложение монитора при запуске или нет.

0 голосов
/ 26 апреля 2010

Возможно, немного низко, но вы не можете просто добавить ярлык в папку автозагрузки пользователя (меню «Пуск» / «Программы» / «Автозагрузка»)?

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