12

对于 Inno Setup,我想在 Windows 启动时为 MyAPP Auto Start 创建一个复选框 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.', mbInformation, MB_OK);
    end;
  end;
end;
4

1 回答 1

20

您不需要使用[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 键自 WinXP 以来就存在,因此您可以将 Windows 配置为从安装程序自动运行程序,添加如下内容:

[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.

于 2012-11-06T07:34:53.553 回答