Inno Setup区段之Run篇

简述

安装程序显示最终对话框前要执行的一些程序.

[Run]

  • Filename 必需的

  • Description 描述

  • Parameters 参数

  • WorkingDir 默认初始为当前目录启动

  • StatusMsg 安装过程的消息: 默认为 正在完成安装

  • Flags
    此参数是一组额外选项。可以通过用空格分隔它们来使用多个选项。支持以下选项:

    32bit
    当在 Filename 和 WorkingDir 参数中使用时,促使{sys}常量映射到 32-位系统目录。这是在一个 32-位 模式安装中的默认行为。

    该标志不能与 shellexec 标志组合。

    64bit
    当在 Filename 和 WorkingDir 参数中使用时,促使{sys}常量映射到 64-位系统目录。这是在一个 64-位安装模式安装中的默认行为。

    当安装程序运行在 64-位 Windows 时,该标志仅可被使用,否则将会出现一个错误。在一个安装支持 32- 和 64-位体系结构时,通过添加一个 Check: IsWin64 参数可以避免该错误,当运行在 32-位 Windows 时,将导致该项被静默跳过。

    该标志不能与 shellexec 标志组合。

    hidewizard
    如果指定了该标志,向导将在程序运行期间隐藏。

    nowait
    如果指定了该标志,它将在处理下一个 [Run] 条目前或完成安装前不等待进程执行完成。不能与 waituntilidle 或 waituntilterminated 组合使用。

    postinstall
    仅在 [Run] 区段有效。告诉安装程序在安装完成向导页面创建一个选择框,用户可以选择或不 选择该复选框从而决定是否处理这个条目。以前该标志调用 showcheckbox。

    如果安装程序已经重新启动了用户的电脑(安装了一个带 restartreplace 标志的文件或如果 [Setup] 区段的 AlwaysRestart 指令是 yes 引起的),选择框没有机会出现,因此这些条目不会被处理。

    [Files] 区段条目中的 isreadme 标志现在已被废弃。如果编译器带 isreadme 标志的条目,它将从 [Files] 区段条目中去除 isreadme 标志,并在 [Run] 区段条目列表的开头插入一个生成的 [Run] 条目。该生成的 [Run] 区段条目运行自述文件,并带有 shellexec,skipifdoesntexist,postinstall 和 skipifsilent 标志。

    runascurrentuser
    如果指定了该标志,则产生的进程将继承安装/卸载的用户证书(典型的,完全的管理权限)。

    当 postinstall 标志未被使用时,这是默认行为。

    该标志不能与 runasoriginaluser 组合使用。

    runasoriginaluser
    仅在 [Run] 区段有效。如果该标志被指定,并且该系统是正运行的 Windows Vista 或以后的版本,则产生的进程将执行带有最初启动安装程序的用户证书(通常非高层级的) (即,"pre-UAC 对话框"证书)。

    当 postinstall 标志被使用时,这是默认行为。

    如果用户通过右键点击它的 EXE 文件并选择 "以管理员身份运行" 来启动安装程序,那么遗憾的是这个标志不会有任何效果,因为安装程序有没有机会用原来的用户证书运行任何代码。如果安装程序是从已提升的进程中启动,也是同样的道理。但是请注意,这不是 Inno Setup 一个特定的限制;在任何一种情况中 Windows Installer 的基本安装程序不能返回到原始用户证书。

    该标志不能与 runascurrentuser 组合使用。

    runhidden
    如果指定了该标志,它将在隐藏窗口中运行程序。请在执行一个要提示用户输入的程序中不要使用该标志。

    runmaximized
    如果指定了该标志,将在最大化窗口运行程序或文档。

    runminimized
    如果指定了该标志,将在最小化窗口运行程序或文档。

    shellexec
    如果 Filename 不是一个直接可执行文件(.exe 或 .com 文件),该标志是必需的。当设置该标志时,Filename 可以是一个文件夹或任何已注册的文件类型 -- 包括 .hlp,.doc 等。该文件将用用户系统中与这个文件类型关联的应用程序打开,与在资源管理器双击文件的方法是相同的。

    按默认值,当使用 shellexec 标志时,将不等待,直到生成的进程终止。
    如果你需要,你必须添加标志 waituntilterminated。注意,如果新进程未生成,它不能执行也将不等待 -- 例如,文件指定指定为一个文件夹。

    skipifdoesntexist
    如果该标志在 [Run] 区段中指定,如果 Filename 不存在,安装程序不显示错误消息。

    如果该标志在 [UninstallRun] 区段中指定,如果 Filename 不存在,卸载程序不显示“一些元素不能删除”的警告。

    在使用该标志时,Filename 必须是一个绝对路径。

    skipifnotsilent
    仅在 [Run] 区段有效。告诉安装程序如果安装程序未在静默运行则跳过这个条目。

    skipifsilent
    仅在 [Run] 区段有效。告诉安装程序如果安装程序在静默运行则跳过这个条目。

    unchecked
    仅在 [Run] 区段有效。告诉安装程序初始为不选中选择框。如果用户希望处理这个条目,可以通过选取选择框执行。如果 postinstall 标志未同时指定,该标志被忽略。

    waituntilidle
    如果指定了该标志,它将在未输入期间等待,直到进程等待用户输入,而不是等待进程终止。(调用 WaitForInputIdle Win32 函数。)不能与 nowait 或 waituntilterminated 组合使用。

    waituntilterminated
    如果指定该标志,将等待到进程完全终止。注意这是一个默认动作(也就是你不需要指定该标志),除非你使用了 shellexec 标志,在这种情况下,如果你要等待,需要指定该标志。不能与 nowait 或 waituntilidle 组合使用。

code

[Run]
Filename: "{app}\INIT.EXE"; Parameters: "/x"
Filename: "{app}\README.TXT"; Description: "查看自述文件"; Flags: postinstall shellexec skipifsilent
Filename: "{app}\MYPROG.EXE"; Description: "运行应用程序"; Flags: postinstall nowait skipifsilent unchecked
posted @ 2020-07-20 13:29  pengsn  阅读(6090)  评论(0编辑  收藏  举报