</head> <body> <h1>FileInstall</h1> <p>在<a href="../Scripts.htm#ahk2exe">已编译的</a>脚本中包含指定的文件.</p> <pre class="Syntax"><span class="func">FileInstall</span> Source, Dest <span class="optional">, Overwrite</span></pre> <h2 id="Parameters">参数</h2> <dl> <dt>Source</dt> <dd> <p>类型: <a href="../Concepts.htm#strings">字符串</a></p> <p>要添加到已编译可执行文件中的文件名. 如果没有指定绝对路径, 则假定该文件位于(或相对于) 脚本自己的目录中.</p> <p>这个参数必须是一个<a href="../Language.htm#strings">带引号的字符串</a>(不是变量或任何其他表达式), 并且必须列在函数名 FileInstall 的右边(即, 不能在它下面使用的<a href="../Scripts.htm#continuation">延续行</a>上).</p> </dd> <dt>Dest</dt> <dd> <p>类型: <a href="../Concepts.htm#strings">字符串</a></p> <p>当从可执行文件中提取 <em>Source</em> 时, 为其创建的文件的名称. 如果没有指定绝对路径则假定在 <a href="../Variables.htm#WorkingDir">A_WorkingDir</a>. 目标目录必须已经存在.</p> </dd> <dt>Overwrite</dt> <dd> <p>类型: <a href="../Concepts.htm#numbers">整数</a></p> <p>如果省略, 则默认为 0. 否则, 请指定以下数字之一, 指示是否覆盖已存在的文件:</p> <p><strong>0:</strong> 不覆盖现有的文件. 如果 <em>Dest</em> 已经存在, 则操作会失败并且没有任何效果.</p> <p><strong>1:</strong> 覆盖现有的文件.</p> <p>其他值保留供将来使用.</p> </dd> </dl> <h2 id="Error_Handling">错误处理</h2> <p>失败时抛出异常.</p> <p>任何不能将文件写到目的地的情况都被认为是失败. 例如:</p> <ul> <li>目标文件已经存在, 并且 <em>Overwrite</em> 参数为 0 或省略.</li> <li>由于权限错误, 或由于文件正在使用, 目标文件无法打开.</li> <li>目标路径无效或指定了一个不存在的文件夹.</li> <li>源文件不存在(只针对未编译的脚本).</li> </ul> <h2 id="Remarks">备注</h2> <p>当 <a href="../Scripts.htm#ahk2exe">Ahk2Exe</a> 在编译脚本的过程中读取对这个函数的调用时, <em>Source</em> 所指定的文件会被添加到所生成的编译脚本中. 之后, 当编译后的脚本 EXE 运行并执行对 FileInstall 的调用时, 该文件会从 EXE 中提取并写入 <em>Dest</em> 指定的位置.</p> <p>在编译过程中, 添加到脚本中的文件既不会被压缩也不会被加密, 但编译的脚本 EXE 可以通过使用 Ahk2Exe 中适当的选项进行压缩.</p> <p>如果在普通(未编译) 脚本中使用此函数, 则会简单地复制一个副本 -- 这有助于测试最终将被编译的脚本. 如果完整的源路径和目标路径相同, 则不进行任何操作, 因为尝试将文件复制到其当前位置将导致错误. 路径在使用 <a href="https://learn.microsoft.com/windows/win32/api/fileapi/nf-fileapi-getfullpathnamew">GetFullPathName</a> 展开后与 <a href="https://learn.microsoft.com/windows/win32/api/winbase/nf-winbase-lstrcmpiw">lstrcmpi</a> 进行比较.</p> <h2 id="Related">相关</h2> <p><a href="FileCopy.htm">FileCopy</a>, <a href="_Include.htm">#Include</a></p> <h2 id="Examples">示例</h2> <div class="ex" id="ExBasic"> <p><a class="ex_number" href="#ExBasic"></a> 在脚本的编译版本中包含一个文本文件. 之后, 当编译后的脚本被执行时, 包含的文件会被解压缩到另一个位置, 并使用指定的名字. 如果这个位置上已经有这个名字的文件, 它将被覆盖.</p> <pre>FileInstall "My File.txt", A_Desktop "\Example File.txt", 1</pre> </div> </body> </html>