我的安装程序使用我的应用程序和安装程序本身创建一个文件夹。稍后,安装程序将用作应用程序的更新程序。
所有这些都运行良好,但我想更新安装程序本身,而不仅仅是我的应用程序。
我从我的服务器下载一个zip,并希望zip中的所有内容都覆盖app文件夹中的所有内容(包括安装程序本身)。 每次运行安装程序时,都会收到一个文件已被使用的错误。
安装程序可以自行更新吗?
答案 0 :(得分:1)
您无法替换正在运行的应用程序。
您有以下选择:
restartreplace
flag in Files
section entry为下次Windows启动安排安装程序/更新程序替换。答案 1 :(得分:0)
将安装程序保留在 {app} 目录中对于小型应用程序可能是可接受的,对于较大的应用程序,可以考虑使用updater,甚至是其他位置(以功能请求的形式) ) {备份} 以引用某些闪存或可移动驱动器上的路径。
从 {app} 目录运行设置,在version check之后,将安装程序下载到 {tmp} 文件夹。
在quitting之前执行安装程序,记住脚本代码部分中可能的mutex条件:
if Exec(ExpandConstant('{tmp}\{OutputBaseFilename}), '', '', SW_SHOW,
ewNoWait, ResultCode) then
// success/fail code follows
要copy the installer back to {app}安装脚本将在文件中包含此内容:
[Files]
Source: "{srcexe}"; DestDir: "{app}"; Flags: external
当安装程序 实际从 {app} 运行时,上述行不会产生错误。
然后,要清理,下次从 {src} (= {app} )目录运行安装程序时,可以从带有
的 {tmp} 目录DeleteFile({tmp}\{OutputBaseFilename})