我一直在尝试在运行安装程序时将Inno Setup生成的安装程序复制到安装目录。似乎文件已锁定,因为我的FileCopy命令没有任何结果。我尝试了一个消息框(在同一代码区域中),其中包含往返路径,并且两者都是有效的正确路径,但是不会复制安装程序。
这是将{srcexe}
(安装程序路径)复制到{app}\OriginalInstaller.exe
(应用程序安装路径)的行,对我无济于事。
FileCopy(ExpandConstant('{srcexe}'), ExpandConstant('{app}\OriginalInstaller.exe'), False);
我是Inno Setup的新手,我在一篇相关文章中读到,这根本不可能做到-但是,没有给出任何理由。如果您知道为什么不可能做,那将是一个很好的知识。否则,我希望将安装程序复制到安装位置。
这样做的目的是,如果文件损坏,我可以重新运行安装程序。我有一个启动器程序,用于在启动时检查可执行文件的哈希值,如果它们不正确,它将重新运行安装程序。
提前感谢您的帮助!
确实FileCopy
明确禁止应对安装程序本身。
我不知道是什么原因,但是可能有一些原因。因此请当心,您可能正在做安装程序不喜欢的事情。
无论如何,您可以使用FileCopy
实现替换功能:
TFileStream
class
这是将整个文件加载到内存的低效率实现。如果您的安装程序很大,则必须改进代码以分块复制文件。