Inno Setup - как я могу запустить свою программу, когда пользователь входит в Windows?
Я хочу использовать программу Inno Setup (http://www.jrsoftware.org/isfaq.php) для создания установщика для приложения.
Я хочу, чтобы это приложение запускалось всякий раз, когда пользователь входит в свою учетную запись на машине Windows.
Как я могу сообщить программе Inno Setup о запуске программы, когда пользователь входит в систему?
Ответы
Ответ 1
Поместите ярлык в стартовую папку профиля "Все пользователи". См. Статью базы знаний Создание ярлыков в группе автозагрузки (или автозапуска), которая включает приведенный ниже пример:
[Setup]
PrivilegesRequired=admin
[Icons]
Name: "{commonstartup}\My Program"; Filename: "{app}\MyProg.exe"
Если вы хотите, чтобы программа запускалась только тогда, когда пользователь, который установил программу, входит в систему, используйте {userstartup}
вместо {commonstartup}
. В этом случае привилегии администратора не требуются.
Или, если вы решите написать в" Run "ключ реестра (kb article):
[Registry]
Root: HKCU; Subkey: "SOFTWARE\Microsoft\Windows\CurrentVersion\Run"; ValueType: string; ValueName: "MyProg"; ValueData: """{app}\MyProg.exe"""; Flags: uninsdeletevalue
Если вы используете "HKLM", необходимы дополнительные привилегии администратора.
Ответ 2
Может быть, это было бы полезно для кого-то...
Я столкнулся с некоторыми проблемами в Windows 8 при попытке создать установку, которая автоматически поместила бы раздел реестра автозапуска, такой как:
Root: "HKCU"; Subkey: "SOFTWARE\Microsoft\Windows\CurrentVersion\Run"; ValueType: string; ValueName: "NHMMNAS"; ValueData: "{app}\{#MyAppExeName}"; Flags: uninsdeletevalue
для запуска моего 32-битного приложения .NET при каждом запуске Windows.
Было выяснено, что для 32-битного приложения требуется небольшая модификация, которая заменяет Root: "HKCU"
на Root: "HKCU32"
, поэтому запись в настройке script была:
Root: "HKCU32"; Subkey: "SOFTWARE\Microsoft\Windows\CurrentVersion\Run"; ValueType: string; ValueName: "NHMMNAS"; ValueData: "{app}\{#MyAppExeName}"; Flags: uninsdeletevalue
После добавления строки и переустановки мое приложение запускается при запуске системы без проблем.