Inno Setup:运行程序而不显示复选框

全能的

我有以下几行:

[Run]
Filename: "{app}\MyApp.exe"; Flags: postinstall nowait

我希望我的应用程序可以在不显示复选框的情况下开始使用(这将禁止用户这样做)。

有人可以告诉我如何吗?谢谢你。

TLama

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

1.向导完成后如何手动运行应用程序?

我个人更喜欢这种方式,因为它比添加复选框并在以后将其隐藏更为直接。当其参数等于时您将删除当前[Run]节条目并从NextButtonClick事件方法中调用以下函数之一,CurPageID参数wpFinished表示单击完成按钮:

  • Exec -使用与安装/卸载相同的凭据执行指定的可执行文件或批处理文件。
  • ExecAsOriginalUser -使用最初启动安装程序的用户的(通常不提升的)凭据执行指定的可执行文件或批处理文件
  • ShellExec -使用与安装/卸载相同的凭据打开指定的文件或执行Verb指定的其他操作。
  • ShellExecAsOriginalUser -使用最初启动安装程序的用户的(通常不提升的)凭据打开指定的文件或执行Verb指定的其他操作。

因为您没有使用过runascurrentusernorshellexec标志,所以安装程序会在内部调用类似于以下的函数:

function NextButtonClick(CurPageID: Integer): Boolean;
var
  ResultCode: Integer;
begin
  Result := True;
  if CurPageID = wpFinished then
    ExecAsOriginalUser(ExpandConstant('{app}\MyApp.exe'), '', '', 
      SW_SHOWNORMAL, ewNoWait, ResultCode);
end;

该解决方案的一个弱点是,即使安装程序要求重新启动,程序仍将被执行。要变通解决确定此请求的可能性,我们可以检查是否YesRadio可见(它是,请立即重新启动计算机单选按钮)并选中,这意味着要求用户重新启动计算机并进行确认。这是考虑重新启动请求的版本:

function NextButtonClick(CurPageID: Integer): Boolean;
var
  ResultCode: Integer;
begin
  Result := True;
  // if the "Finish" button was clicked and "Yes, restart the computer now"
  // radio button was either not visible or not selected that time, then...
  if (CurPageID = wpFinished) and ((not WizardForm.YesRadio.Visible) or 
    (not WizardForm.YesRadio.Checked))
  then
    ExecAsOriginalUser(ExpandConstant('{app}\MyApp.exe'), '', '', 
      SW_SHOWNORMAL, ewNoWait, ResultCode);
end;

2.如何禁用最后一页上的安装后复选框?

另一个选项是禁用该复选框。用户将看到该应用程序将要执行,但是将无法对其执行任何操作(当然,除了从“任务管理器”中删除安装程序之外)。这次,您将保留您的[Run]栏目条目,但从RunList[Code]栏目中修改

[Setup]
AppName=My Program
AppVersion=1.5
DefaultDirName=My Program

[Files]
Source: "MyApp.exe"; DestDir: "{app}"

[Run]
Filename: "{app}\MyApp.exe"; Flags: postinstall nowait

[Code]
procedure CurPageChanged(CurPageID: Integer);
begin
  // you must do this as late as possible, because the RunList is being modified
  // after installation; so this will check if there's at least one item in the
  // RunList and then set to the first item (indexing starts at 0) Enabled state
  // to False
  if (CurPageID = wpFinished) and (WizardForm.RunList.Items.Count > 0) then
    WizardForm.RunList.ItemEnabled[0] := False;
end;

3.如何完全隐藏RunList?

与第二种选择相反,这将满足您的要求。它将使复选框保持隐藏状态,或者更确切地说,它将隐藏整个复选框RunList,因此,如果您在具有指定标志[Run]部分中具有多个条目postinstall,则也不会显示该复选框

[Setup]
AppName=My Program
AppVersion=1.5
DefaultDirName=My Program

[Files]
Source: "MyApp.exe"; DestDir: "{app}"

[Run]
Filename: "{app}\MyApp.exe"; Flags: postinstall nowait

[Code]
procedure CurPageChanged(CurPageID: Integer);
begin
  if CurPageID = wpFinished then
    WizardForm.RunList.Visible := False;
end;

本文收集自互联网,转载请注明来源。

如有侵权,请联系[email protected] 删除。

编辑于
0

我来说两句

0条评论
登录后参与评论

相关文章

来自分类Dev

Inno Setup:运行程序而不显示复选框

来自分类Dev

Inno Setup:如何选中复选框显示(隐藏/取消隐藏)密码

来自分类Dev

Inno Setup - 控件/复选框的动态定位

来自分类Dev

Inno Setup:/ verysilent安装后如何自动运行程序?

来自分类Dev

Inno Setup-将子组件显示为同级,并在复选框中显示选中而不是正方形

来自分类Dev

Inno Setup在下次安装时记住“自定义”复选框状态

来自分类Dev

Inno Setup从代码更改组件复选框状态后更新磁盘空间

来自分类Dev

在Inno Setup“完成”页面上访问复选框控件的属性

来自分类Dev

Inno Setup - 如何在完成的页面上创建复选框?

来自分类Dev

Inno Setup语法-OR,AND

来自分类Dev

Inno Setup中的TTreeView

来自分类Dev

Inno Setup:在指定的时间(以秒为单位)后自动选中一个复选框

来自分类Dev

我可以在Inno Setup的同一“ CreateInputOptionPage”页面上使用复选框和单选按钮吗?

来自分类Dev

Inno Setup:在指定的时间(以秒为单位)后自动选中一个复选框

来自分类Dev

Inno Setup生成的安装程序在某些系统上不显示“选择目标位置”页面

来自分类Dev

Inno Setup:不显示控制面板图标

来自分类Dev

Inno-Setup:检测/ SUPPRESSMSGBOXES在代码中不显示MsgBox

来自分类Dev

Inno Setup - 避免显示子安装程序的文件名

来自分类Dev

Inno Setup,[运行]中参数中的空格

来自分类Dev

inno setup中的“ Not in a loop”错误

来自分类Dev

未捕获Inno Setup异常

来自分类Dev

如何从Inno Setup安装JRE?

来自分类Dev

Inno Setup ComponentsList OnClick事件

来自分类Dev

Inno Setup设置TInputQueryWizardPage高度

来自分类Dev

Inno Setup从CDATA创建TStringList

来自分类Dev

Inno Setup:选择组件的功能

来自分类Dev

Inno Setup隐藏日志条目

来自分类Dev

Inno Setup Abs(Integer)功能

来自分类Dev

Inno Setup更改CreateOutputMsgMemoPage字体

Related 相关文章

  1. 1

    Inno Setup:运行程序而不显示复选框

  2. 2

    Inno Setup:如何选中复选框显示(隐藏/取消隐藏)密码

  3. 3

    Inno Setup - 控件/复选框的动态定位

  4. 4

    Inno Setup:/ verysilent安装后如何自动运行程序?

  5. 5

    Inno Setup-将子组件显示为同级,并在复选框中显示选中而不是正方形

  6. 6

    Inno Setup在下次安装时记住“自定义”复选框状态

  7. 7

    Inno Setup从代码更改组件复选框状态后更新磁盘空间

  8. 8

    在Inno Setup“完成”页面上访问复选框控件的属性

  9. 9

    Inno Setup - 如何在完成的页面上创建复选框?

  10. 10

    Inno Setup语法-OR,AND

  11. 11

    Inno Setup中的TTreeView

  12. 12

    Inno Setup:在指定的时间(以秒为单位)后自动选中一个复选框

  13. 13

    我可以在Inno Setup的同一“ CreateInputOptionPage”页面上使用复选框和单选按钮吗?

  14. 14

    Inno Setup:在指定的时间(以秒为单位)后自动选中一个复选框

  15. 15

    Inno Setup生成的安装程序在某些系统上不显示“选择目标位置”页面

  16. 16

    Inno Setup:不显示控制面板图标

  17. 17

    Inno-Setup:检测/ SUPPRESSMSGBOXES在代码中不显示MsgBox

  18. 18

    Inno Setup - 避免显示子安装程序的文件名

  19. 19

    Inno Setup,[运行]中参数中的空格

  20. 20

    inno setup中的“ Not in a loop”错误

  21. 21

    未捕获Inno Setup异常

  22. 22

    如何从Inno Setup安装JRE?

  23. 23

    Inno Setup ComponentsList OnClick事件

  24. 24

    Inno Setup设置TInputQueryWizardPage高度

  25. 25

    Inno Setup从CDATA创建TStringList

  26. 26

    Inno Setup:选择组件的功能

  27. 27

    Inno Setup隐藏日志条目

  28. 28

    Inno Setup Abs(Integer)功能

  29. 29

    Inno Setup更改CreateOutputMsgMemoPage字体

热门标签

归档