Inno setup Inno安装,windows启动时应用程序启动

Inno setup Inno安装,windows启动时应用程序启动,inno-setup,Inno Setup,对于Inno设置, 我想在Windows启动时为MyAPP自动启动创建一个复选框任务。 我的代码如下所示: 还有,如何编写下面的代码-DO_Set_AutoStart_WhenWindowsStart() ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ [Tasks] Name: "StartMenuEntry" ; Description: "Start my app when Windows starts" ; GroupDescription: "Windows

对于Inno设置, 我想在Windows启动时为MyAPP自动启动创建一个复选框任务。 我的代码如下所示:

还有,如何编写下面的代码-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;
[任务]
名称:“StartMenuEntry”;描述:“Windows启动时启动我的应用程序”;GroupDescription:“Windows启动”;最小版本:4,4;
[守则]
//执行其他任务-Windows启动时自动启动
函数NextButtonClick(CurPageID:Integer):布尔值;
变量
索引:整数;
开始
结果:=真;
如果CurPageID=wpSelectTasks,则
开始
索引:=WizardForm.TasksList.Items.IndexOf('Windows启动时启动我的应用程序');
如果索引为-1,则
开始
如果选中了WizardForm.TasksList
MsgBox('已检查第一个任务',MB信息,MB_OK)
在Windows启动()时是否设置自动启动;
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
其他的
MsgBox('第一个任务尚未检查',MB信息,MB_OK);
结束;
结束;
结束;

您无需使用[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描述的方法在Windows8上不起作用(因为缺少开始菜单,我忘了)。我手头没有Windows8可供测试,所以这取决于你测试它是否在Windows8上工作

自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

您的意思是“当操作系统已加载,但没有用户登录”还是“当每个用户登录且桌面可用”@健榮 陳 欢迎来到StackOverflow。我编辑了您的问题,以显示作为代码块发布的代码。请看一下它是如何完成的,并检查以了解如何格式化您的帖子。我的意思是,我希望每次Windows操作系统启动时,我的应用程序都会自动运行。您应该只使用其中一个,而不是两个。您选择哪一个通常取决于您的
PrivilegesRequired
设置。@Miral{commonstartup}需要提升的权限,但即使使用它,有时您也可能希望使用{userstartup},因此这更取决于您的程序是否需要为该计算机上的任何用户运行。:)非常感谢你,贾斯盖特!但是,我需要用户选择的复选框,我可以用复选框自动启动吗?只是更新,我得到一个错误
指令或参数“Tasks”表达式错误:参数“Tasks”包含未知任务
,所以我尝试删除语法,只需使用
名称:“{commonstartup}\My Program”;文件名:“{app}\MyProg.exe”
,在Inno版本6.0.5的Win10上对我有效。答案包含一个
StartMenuEntry
任务依赖项,因为问题有一个
[Tasks]名称:“StartMenuEntry”
部分。当然,这只适用于OP,如果您希望注册表项始终运行,那么您可以通过删除dependencie来实现。如果希望它根据用户选择运行,只需更改要依赖的
任务的名称即可。