Inno Setup区段之Files篇

简述

定义安装程序安装文件到系统中的可选文件区段

[Files]区段

  • Source 必需 源文件名称

  • DestDir 必需的 文件安装到用户系统的目录

  • DestName 指定该文件使用新的文件名安装到用户系统中

  • Excludes 指定要排除的格式列表

  • Attribs ; 文件附加属性 [readonly , hidden, system, notcontentindexed]

  • Permissions: 指定操作ACL(访问控制权限)的附加权限 [full, modify, readexec]

  • Flags :

  • 此参数是一组额外选项。可以通过用空格分隔它们来使用多个选项。支持以下选项:
    32bit
    当在 Source 和 DestDir 参数使用时,促使 {sys} 常量映射到 32-位系统目录,regserver 和 regtypelib 标志将文件视为 32-位,以及 sharedfile 标志更新 32-位 SharedDLLs 注册表键。这是在 32-位安装模式时的默认行为。

    64bit
    当在 Source 和 DestDir 参数使用时,确保 {sys} 常量映射到 64-位系统目录,regserver 和 regtypelib 标志将文件视 64-位,以及 sharedfile 标志更新 64-位 SharedDLLs 注册表键。这是在 64-位安装模式时的默认动作。

    allowunsafefiles
    禁止编译器自动检查不安全文件。强烈推荐你不要使用该标志,除非你有绝对的把握。

    comparetimestamp
    (不推荐,参见下面)
    如果安装的文件已经在用户系统中存在,以及至少下列条件中的一个为 true,则告诉安装程序进行时间戳比较:

    •现有的文件和安装的文件都没有版本信息。
    •条目中同时使用了 ignoreversion 标志。
    •未使用 replacesameversion 标志,并且现有的文件和要安装的文件版本号相同(用文件的版本信息决定)。
    如果现有的文件的时间戳比安装的文件老,现有的文件将被替换。否则,将不替换。

    如果还没有其它方法,不推荐使用该标志,因为其中有一个内部问题: NTFS 分区在 UTC (不同于 FAT 分区)贮存时间戳,因本地时间戳原因 -- Inno Setup 按默认工作 -- 只要用户改变他们系统的时间区域,或转到或使夏令时生效。这可能会导致用户不希望替换的文件被替换,或用户希望替换的文件未被替换。

    confirmoverwrite
    替换现有的文件前总是询问用户确认。

    createallsubdirs
    按默认值,当编译器包含子目录搜索 Source 文件名/通配符时,将跳过空目录。该标志会使这些目录在安装时被创建(就象在 [Dirs] 区段创建一样)。

    必须和 recursesubdirs 组合使用。

    deleteafterinstall
    告诉安装程序象平常一样安装文件,但一旦安装完成(或中断)则删除。这在提取脚本中的 [Run] 区段指定要执行的临时程序时有用。

    该标志不会导致安装期间未被替换的现有文件被删除。

    该标志不能与 isreadme,regserver,regtypelib,restartreplace,sharedfile,或 uninsneveruninstall 标志组合使用。

    dontcopy
    在正常的文件复制阶段不复制文件到用户系统,但会静态编译到安装文件中。该标志是有用的,如果要处理该文件是通过 [Code] 区段专门处理和使用提取函数 ExtractTemporaryFile 处理。

    dontverifychecksum
    防止安装程序在提取后校验文件。在你想修改的已编译到安装程序中的文件使用该标志。

    必须与 nocompression 组合。

    external
    该标志告诉 Inno Setup 不要编译 Source 参数指定的文件到安装程序文件中,改为从分布的媒介或用户系统中复制。参见 Source 参数的描述获取更多信息。

    fontisnttruetype
    如果用 FontInstall 参数的条目安装一个非 TrueType 字体,则使用该标志。

    gacinstall
    将文件安装到 .NET Global Assembly Cache 中。当与 sharedfile 结合使用时,在引用总数达到零时文件只能被卸载。

    若要卸载文件,卸载程序可使用由参数 StrongAssemblyName 指定的强程序集名称。

    如果企图在无 .NET Framework 存在的系统中使用该标志,则会出现一个异常。

    ignoreversion
    不比较版本信息;不考虑版本号替换现有的文件。

    此标志仅应用于应用程序专用的文件,从不共享系统文件。

    isreadme
    表示文件为“自述”文件。安装程序中只有一个文件可以使用该标志。当文件使用该标志时,在安装完成后询问用户是否想查看自述文件。如果选择是,安装程序将使用与这个文件类型默认的程序打开该文件。因上,自述文件应该总是使用如 .txt、.wri 或 .doc 扩展名。

    请注意,如果安装程序重新启动了用户的电脑(安装了一个带 restartreplace 标志的文件或 [Setup] 区段的 AlwaysRestart 指令设为 yes),用户将没有查看自述文件的选项。

    nocompression
    预防编译器尝试压缩文件。在你知道压缩没有什么好处的文件(例如 JPEG 图像)上使用该标志,可以加速编译进度,并可以使生成的安装程序更小。

    noencryption
    防止文件被加密贮存。如果你已经启用了加密(用 [Setup] 区段指令 Encryption),但想让它可以在用户输入正确的密码之前用 [Code] 区段支持函数 ExtractTemporaryFile 提取该文件,则使用该标志)。

    noregerror
    当与 regserver 或 regtypelib 标志中的任一一个组合使用时,安装程序将在注册失败时不显示任何错误消息。

    onlyifdestfileexists
    仅在用户系统中已经存在相同名称的文件时安装文件。如果你的安装程序是已经安装的软件的补丁,并且你希望安装用户没有安装的文件时,该标志可能有用。

    onlyifdoesntexist
    仅在用户系统中不存在时安装文件。

    overwritereadonly
    总是覆盖只读文件。如果不带该标志,安装程序在遇到只读文件时询问用户是否覆盖。

    promptifolder
    按默认值,当安装的文件比现有的文件是个较老的版本(或当使用 comparetimestamp 时发现较早的时间戳)安装程序将不替换现有的文件(参见这个主题下面的备注区段获取详细资料)。当使用该标志时,安装程序将询问用户是否替换文件,默认的回答是保留现有的文件 。

    recursesubdirs
    告诉编译器或安装程序同时也搜索 Source 目录下子目录中的 Source 文件名/通配符。

    regserver
    注册 OLE 服务(a.k.a. ActiveX 控件)。使用该标志,安装程序将查找和执行 DLL/OCX 的 DllRegisterServer 输出。卸载程序调用 DllUnregisterServer。当用于与 sharedfile 结合时,DLL/OCX 只将在涉及的计数为零时取消注册。

    在 64-位安装模式中,文件假定为 64-位映像,并将在 64 位进程内注册。你可以通过指定 32bit 标志来覆盖它。

    更多信息请参见在该主题下面的备注。

    regtypelib
    注册类型库(.tlb)。卸载程序将撤消类型库注册(除非指定了 uninsneveruninstall 标志)。与 regserver 标志一样,当用于与 sharedfile 结合时,文件只将在涉及的计数为零时取消注册。

    在 64-位安装模式安装运行于x64版本的Windows时,类型库将按 64-位处理进行注册。你可以通过指定 32bit 标志忽略。

    不支持在 Windows 的 Itanium 版本的 64-位安装模式中注册类型库。

    更多信息请参见在该主题下面的备注。

    replacesameversion
    当使用该标志,并且文件已经在用户系统中存在,以及它与要安装的文件版本号相同,安装程序将比较文件,如果它们的内部不同,则替换现有的文件。

    默认动作(例如,当该标志未使用)是不替换版本号相同的已有的文件。

    restartreplace
    该标志通常用于替换系统核心文件。如果文件预先已经存在,且发现被锁定,以至于安装程序不能替换,安装程序将注册该文件(用 WININIT.INI 可通过使用 MoveFileEx,分别用于 Windows 和 Windows NT)在下次系统重新启动时替换。当出现这种情况时,将在安装完成时提示用户重新启动电脑。

    注意:如果用户没有管理权限,则该标志没有作用。因此,当使用该标志时,推荐你在 admin.的默认设置下权限 PrivilegesRequired [Setup] 区段指令。

    setntfscompression
    指示安装程序对文件启用 NTFS 压缩(即使它没有取代文件)。如果它因为任何原因设置压缩状态失败(例如,如果压缩不被文件系统支持),将不显示错误信息。

    sharedfile
    指定在多个应用程序中共享该文件,如果没有其他应用程序正在使用该文件,则只需在卸载时删除该文件。使用该标志的大多数文件被安装到 Windows 系统目录,包含 .OCX、.BPL 和 .DPL 文件。

    使用 Windows 共享文件计数功能(位于注册表 HKEY_LOCAL_MACHINESOFTWAREMicrosoftWindowsCurrentVersionSharedDLLs)。这个功能是用于让文件在应用程序之间共享使用,不要不注意将它删除了。每次安装该文件,涉及的文件计数将增加,当使用这个文件的应用程序卸载,涉及的文件计数减少。如果计数减少到零,该文件被删除(会通知用户确认,除非同时指定了 uninsnosharedfileprompt 标志)。

    如果安装程序被多次运行,则引用文件的次数将超过一次。卸载程序将减少相同次数的引用,所以无论如何没有引用被遗漏(假如来自它的 append 默认设置 UninstallLogMode [Setup] 区段指令不更改)。

    当该标志被使用时,在 DestDir 参数中不指定 {syswow64};而用 {sys} 代替。在32-位安装模式安装中,即使 {sys} 和 {syswow64} 映射到相同的基础目录,路径名称也必须精确匹配正在使用的每个其他现有的安装程序;否则对文件将创建第二个引用数目,这可能导致文件过早地被删除。如果你需要在64-位安装模式安装中安装一个共享文件到 32-位系统目录,可在 DestDir 参数中指定 {sys},并另外包含 32bit 标志。

    sign
    此标志指示编译器在存储它们之前对原始源文件进行数字签名。如果 [Setup] 区段指令 SignTool 未被设置,则忽略。

    signonce
    此标志指示编译器在存储它们之前对原始源文件进行数字签名,但仅在文件未签名时才对其进行数字签名。如果 [Setup] 区段指令 SignTool 未被设置,则忽略。

    skipifsourcedoesntexist
    该标志指示编译器 -- 或安装程序,如果 external 标志也被使用 -- 如果源文件不存在,则静默地跳过该项,而不是显示一个错误消息。

    solidbreak
    当固态压缩被启用时,该标志指示编译器完成当前压缩流,并在压缩文件被 Source 匹配前开始一个新的压缩。这允许安装程序立即寻求到文件而无需首先解压缩任何前面的文件。在一个大的、多组件的安装中,如果你发现太多的时间花费在解压缩属于未被选上的组件文件上可以是有用的。

    sortfilesbyextension
    该标志指示编译器在按路径名排序前按扩展名进行排序,将所找到的文件进行压缩。如果也使用固态压缩,这可能会降低安装程序的大小。

    sortfilesbyname
    在按路径名称排序前,该标志指示编译器按名称排序压缩找到的文件。如果也使用固态压缩,这有可能减小安装程序的尺寸。如果 sortfilesbyextension 也被使用,则文件首先按扩展名排序。

    touch
    此标志会导致安装程序将安装文件的日期/时间戳设置为由 TouchDate 和 TouchTime [Setup] 区段指令指定的程序。

    如果与 external 标志结合,此标志没有任何作用。

    uninsnosharedfileprompt
    当卸载共享文件时,如果其引用计数为零而不是询问用户,则自动删除文件。若要发挥作用则必须结合 sharedfile 标志。

    uninsremovereadonly
    卸载该文件时,请在尝试删除文件之前从文件中移除任何只读属性。

    uninsrestartdelete
    当该标志被使用,并且文件在卸载时正在使用时,在系统重新启动时,卸载程序将队列文件被删除,并在卸载过程结束时询问用户是否要重新启动。当卸载外壳扩展之类无法以编程方式停止时,这个标志可以是有用的。注意,需要具有管理权限,此标志才有作用。

    uninsneveruninstall
    永远不要删除该文件。此标志在安装任何情况下都不应删除很常见的共享文件(如 MFC DLL)时,非常有用。

    注意,如果该标志结合 sharedfile 标志,则文件将不会在卸载时删除,但仍然会引用计数适当的递减。

    unsetntfscompression
    指示安装程序禁用 NTFS 压缩文件(即使它不替换文件)。如果它不能以任何理由(例如,如果由文件系统不支持压缩)设置压缩状态,将不显示任何错误消息。

code

	[Files]
	Source: default.exe ;  DestDir: {app}/default.exe;
原文地址:https://www.cnblogs.com/pengsn/p/13343267.html