# FileInstall

在已编译的脚本中包含指定的文件.

    FileInstall Source, Dest , Overwrite

## 参数

Source

  类型: 字符串

  要添加到已编译可执行文件中的文件名. 如果没有指定绝对路径, 则假定该文件位于(或相对于) 脚本自己的目录中.

  文件名不能包含双引号或通配符. 此参数必须放在 FileInstall 函数的右边而不能在下面(即, 不能在它下面使用延续行).

Dest

  类型: 字符串

  当从可执行文件中提取 Source 时, 为其创建的文件的名称. 如果没有指定绝对路径则假定在 A_WorkingDir. 目标目录必须已经存在.

Overwrite

  类型: 整数(布尔值)

  此参数确定是否覆盖已存在的文件. 如果此参数为 1(true), 则该函数将覆盖现有文件. 如果省略或为 0(false), 则该函数不会覆盖现有文件.

## 错误处理

失败时抛出异常.

任何不能将文件写到目的地的情况都被认为是失败. 例如:

- 目标文件已经存在, 并且 Overwrite 参数为 0(false) 或省略.
- 由于权限错误, 或由于文件正在使用, 目标文件无法打开.
- 目标路径无效或指定了一个不存在的文件夹.
- 源文件不存在(只针对未编译的脚本).

## 备注

当 Ahk2Exe 在编译脚本的过程中读取对这个函数的调用时, Source 所指定的文件会被添加到所生成的编译脚本中. 之后, 当编译后的脚本 EXE 运行并执行对 FileInstall 的调用时, 该文件会从 EXE 中提取并写入 Dest 指定的位置.

在编译过程中, 添加到脚本中的文件既不会被压缩也不会被加密, 但编译的脚本 EXE 可以通过使用 Ahk2Exe 中适当的选项进行压缩.

如果在普通(未编译) 脚本中使用此函数, 则会简单地复制一个副本 -- 这有助于测试最终将被编译的脚本.

## 相关

FileCopy, #Include

## 示例

在脚本的编译版本中包含一个文本文件. 之后, 当编译后的脚本被执行时, 包含的文件会被解压缩到另一个位置, 并使用指定的名字. 如果这个位置上已经有这个名字的文件, 它将被覆盖.

    FileInstall "My File.txt", A_Desktop "\Example File.txt", 1

dftg