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

После добавления строки и переустановки мое приложение запускается при запуске системы без проблем.