简体   繁体   English

Inno Setup,APP启动Windows启动时

[英]Inno Setup, APP start When windows start

For Inno Setup, I would like to create a checkbox Task for MyAPP Auto Start when Windows Start. 对于Inno Setup,我想在Windows启动时为MyAPP Auto Start创建一个复选框Task。 My code like below : 我的代码如下:

And, How to write the codes below - DO_Set_AutoStart_WhenWindowsStart() ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ 并且,如何编写下面的代码 - 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;

You don't need to make use of the [code] section to add an automatic starting app. 您无需使用[code]部分添加自动启动应用程序。

There are different ways to accomplish this, for example 例如,有不同的方法可以实现这一目标

[icons]
Name: "{userstartup}\My Program"; Filename: "{app}\MyProg.exe"; Tasks:StartMenuEntry;
Name: "{commonstartup}\My Program"; Filename: "{app}\MyProg.exe"; Tasks:StartMenuEntry;

The difference between {userstartup} and {commonstartup}, if not obvious, is that {userstartup} affects the startup menu entry for the current user and {commonstartup} affects all the users of the target machine. {userstartup}和{commonstartup}之间的区别(如果不是很明显)是{userstartup}影响当前用户的启动菜单条目,{commonstartup}影响目标机器的所有用户。


Edit 编辑

You may also use the registry to start an application. 您还可以使用注册表来启动应用程序。 I'm adding this because the OP mentioned in comments the described method doesn't work on windows 8 (because the lack of start menu, which I forgot). 我添加这个是因为在评论中提到的OP所描述的方法在Windows 8上不起作用(因为缺少开始菜单,我忘了)。 I have no windows 8 at hand to test, so it's up to you to test if this works on windows 8 or not. 我手边没有Windows 8进行测试,所以由你来测试这是否适用于Windows 8。

The Run keys in the registry exists since WinXP, so you can configure windows to auto-run a program from the installer adding something like this: 自WinXP以来, 注册表中Run键存在,因此您可以配置窗口以从安装程序自动运行程序,添加如下内容:

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

Don't miss I'm also changing the Tasks parameter in the example to AutoRunRegistry . 不要错过我也将示例中的Tasks参数更改为AutoRunRegistry

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM