对于Inno设置,
我想在Windows启动时为MyAPP自动启动创建一个复选框Task.
我的代码如下:
我想在Windows启动时为MyAPP自动启动创建一个复选框Task.
我的代码如下:
并且,如何编写以下代码 – DO_Set_AutoStart_WhenWindowsStart()
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
[Tasks] Name: "StartMenuEntry" ; Description: "Start my app when Windows starts" ; GroupDescription: "Windows Startup"; MinVersion: 4,4; [code] //Do Additional Task - Auto Start when Windows Start function NextButtonClick(CurPageID: Integer): Boolean; var Index: Integer; begin Result := True; if CurPageID = wpSelectTasks then begin Index := WizardForm.TasksList.Items.IndexOf('Start my app when Windows starts'); if Index <> -1 then begin if WizardForm.TasksList.Checked[Index] then MsgBox('First task has been checked.',mbInformation,MB_OK) DO_Set_AutoStart_WhenWindowsStart(); ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ else MsgBox('First task has NOT been checked.',MB_OK); end; end; end;
解决方法
您无需使用[code]部分添加自动启动应用程序.
例如,有不同的方法可以实现这一目标
[icons] Name: "{userstartup}\My Program"; Filename: "{app}\MyProg.exe"; Tasks:StartMenuEntry; Name: "{commonstartup}\My Program"; Filename: "{app}\MyProg.exe"; Tasks:StartMenuEntry;
{userstartup}和{commonstartup}之间的区别(如果不是很明显)是{userstartup}影响当前用户的启动菜单条目,{commonstartup}影响目标机器的所有用户.
编辑
您还可以使用注册表来启动应用程序.我添加这个是因为在评论中提到的OP所描述的方法在Windows 8上不起作用(因为缺少开始菜单,我忘了).我手边没有Windows 8进行测试,所以由你来测试这是否适用于Windows 8.
Run keys in the registry自WinXP以来就存在,因此您可以配置窗口以从安装程序自动运行程序,添加如下内容:
[Registry] ;current user only Root: HKCU; Subkey: "Software\Microsoft\Windows\CurrentVersion\Run"; ValueType: string; ValueName: "MyProgram"; ValueData: "{app}\MyProg.exe"; Tasks:AutoRunRegistry; ;any user Root: HKLM; Subkey: "Software\Microsoft\Windows\CurrentVersion\Run"; ValueType: string; ValueName: "MyProgram"; ValueData: "{app}\MyProg.exe"; Tasks:AutoRunRegistry;
不要错过我也将示例中的Tasks参数更改为AutoRunRegistry.