Inno setup Inno安装程序:运行程序时不显示复选框

Inno setup Inno安装程序:运行程序时不显示复选框,inno-setup,Inno Setup,我有以下几行: [Run] Filename: "{app}\MyApp.exe"; Flags: postinstall nowait 我希望我的应用程序启动时不显示复选框(这将不允许用户这样做) 有人能告诉我怎么做吗? 谢谢。我能想到的选择很少。第一个是从脚本的[code]部分运行应用程序,第二个是禁用[run]部分条目的复选框,第三个是隐藏运行列表 1.向导完成后,如何手动运行应用程序? 我个人更喜欢这种方式,因为它比添加复选框并在以后隐藏它更简单。您将删除当前的[Run]节条目,并在其

我有以下几行:

[Run]
Filename: "{app}\MyApp.exe"; Flags: postinstall nowait
我希望我的应用程序启动时不显示复选框(这将不允许用户这样做)

有人能告诉我怎么做吗?
谢谢。

我能想到的选择很少。第一个是从脚本的
[code]
部分运行应用程序,第二个是禁用
[run]
部分条目的复选框,第三个是隐藏
运行列表

1.向导完成后,如何手动运行应用程序? 我个人更喜欢这种方式,因为它比添加复选框并在以后隐藏它更简单。您将删除当前的
[Run]
节条目,并在其
CurPageID
参数等于
wpFinished
时从事件方法调用以下函数之一,这表示单击Finish按钮:

  • -使用与安装/卸载相同的凭据执行指定的可执行文件或批处理文件
  • -使用最初启动安装程序的用户的(通常为非提升)凭据执行指定的可执行文件或批处理文件
  • -使用与安装/卸载相同的凭据打开指定的文件或执行由谓词指定的其他操作
  • -使用最初启动安装程序的用户的(通常为非提升)凭据打开指定的文件或执行谓词指定的其他操作
由于未使用nor标志,安装程序会在内部调用类似以下内容的函数:

函数NextButtonClick(CurPageID:Integer):布尔;
变量
结果代码:整数;
开始
结果:=真;
如果CurPageID=wpFinished,则
ExecAsOriginalUser(ExpandConstant('{app}\MyApp.exe'),'',
SW_显示正常、ewNoWait、结果代码);
结束;
此解决方案的一个缺点是,即使安装程序请求重新启动,也会执行程序。要解决确定此请求的可能性缺失的问题,我们可以检查
YesRadio
是否可见(是,立即重新启动计算机单选按钮)并选中,这意味着要求用户重新启动计算机并确认。以下是考虑重新启动请求的版本:

函数NextButtonClick(CurPageID:Integer):布尔;
变量
结果代码:整数;
开始
结果:=真;
//如果单击“完成”按钮和“是,立即重新启动计算机”
//单选按钮当时不可见或未选中,然后。。。
如果(CurPageID=wpFinished)和((不是WizardForm.YesRadio.Visible)或
(不是WizardForm.YesRadio.Checked)
然后
ExecAsOriginalUser(ExpandConstant('{app}\MyApp.exe'),'',
SW_显示正常、ewNoWait、结果代码);
结束;
2.如何禁用最后一页上的“安装后”复选框? 另一个选项是禁用该复选框。用户将看到应用程序将被执行,但无法对其执行任何操作(当然,除了从任务管理器中删除设置)。这一次,您将保留
[Run]
部分条目,但从
[code]
部分修改
运行列表

[设置]
AppName=我的程序
AppVersion=1.5
DefaultDirName=我的程序
[档案]
资料来源:“MyApp.exe”;DestDir:“{app}”
[运行]
文件名:“{app}\MyApp.exe”;标志:postinstall nowait
[守则]
过程CurPageChanged(CurPageID:Integer);
开始
//您必须尽可能晚地执行此操作,因为正在修改运行列表
//安装后;因此,这将检查列表中是否至少有一项
//运行列表,然后设置为第一项(索引从0开始)启用状态
//伪造
如果(CurPageID=wpFinished)和(WizardForm.RunList.Items.Count>0),则
WizardForm.RunList.ItemEnabled[0]:=False;
结束;
3.如何完全隐藏运行列表? 与第二种选择相反,这将满足您的要求。它将使复选框保持隐藏状态,或者更准确地说,它将隐藏整个
运行列表
,因此,如果在
[Run]
部分中有多个条目指定了标志,则也不会看到:

[设置]
AppName=我的程序
AppVersion=1.5
DefaultDirName=我的程序
[档案]
资料来源:“MyApp.exe”;DestDir:“{app}”
[运行]
文件名:“{app}\MyApp.exe”;标志:postinstall nowait
[守则]
过程CurPageChanged(CurPageID:Integer);
开始
如果CurPageID=wpFinished,则
WizardForm.RunList.Visible:=False;
结束;
适用于5.5.7版

如果要自动打开网站,请添加以下代码

[Code]
procedure CurPageChanged(CurPageID: Integer);
var
  ErrorCode : Integer ;
begin
  if CurPageID = wpFinished then
    ShellExecAsOriginalUser('', ExpandConstant('http:\\www.google.pt'), '', '',SW_SHOWNORMAL, ewNoWait, ErrorCode);
end;

我使用[Code]过程CurPageChanged(CurPageID:Integer);如果CurPageID=wpFinished,则开始,然后WizardForm.RunList.Visible:=False;结束;如果您不打算添加另一个复选框(希望有一天保持可见),则该选项足够安全。第四个选项是在[设置]部分使用
DisableFinishedPage=yes
完全禁用完成页。但我不知道这是否可取。您没有点击“完成”的最后一页。相反,您的程序刚刚启动。