Installation Inno设置-文件正在使用,不允许跳过/取消
我已经根据需要配置了“Inno设置”,但有一点我无法修改 我们有一个应用程序,安装在客户服务器的网络文件夹中。基本上,更新文件的工作与预期的一样 如果网络上的某个客户端(未启动更新的用户)打开了应用程序,我将收到一条消息框/errorbox“删除文件失败…文件正被另一个进程使用”-包括3个按钮“重试”、“跳过此文件(不推荐)”、“取消安装”。我附上了一张示例图片(可在互联网上找到,但信息相同)Installation Inno设置-文件正在使用,不允许跳过/取消,installation,inno-setup,Installation,Inno Setup,我已经根据需要配置了“Inno设置”,但有一点我无法修改 我们有一个应用程序,安装在客户服务器的网络文件夹中。基本上,更新文件的工作与预期的一样 如果网络上的某个客户端(未启动更新的用户)打开了应用程序,我将收到一条消息框/errorbox“删除文件失败…文件正被另一个进程使用”-包括3个按钮“重试”、“跳过此文件(不推荐)”、“取消安装”。我附上了一张示例图片(可在互联网上找到,但信息相同) 在那里你可以看到3个按钮。我想禁用“跳过此文件”和“取消安装”。用户应该能够点击“重试”-在所有客户
在那里你可以看到3个按钮。我想禁用“跳过此文件”和“取消安装”。用户应该能够点击“重试”-在所有客户端关闭其应用程序之前,他们应该一直处于停滞状态。我认为您无法更改该消息框 有两种选择:
- 在安装新版本之前,您可以使用自己的代码删除目标文件,在文件消失之前不允许继续
尽管我仍然相信代码至少应该允许中止[文件] Source:“Source:“C:\SampleApplicationData\*”DestDir:“{app}\SampleApp”\ 标志:recursesubdirs createallsubdirs;安装前:ForcedDelete [守则] 程序强制删除; 变量 文件名:字符串; 删除:布尔值; 开始 文件名:=ExpandConstant(当前文件名); 重复 如果文件不存在(文件名),则 开始 日志(格式('文件%s不存在',[文件名]); 已删除:=真; 结束 其他的 如果删除文件(文件名),则 开始 日志(格式('文件%s已删除',[文件名]); 已删除:=真; 结束 其他的 开始 MsgBox(格式('Error deleting%s',[FileName]),mbError,MB_OK); 删除:=假; 结束; 直至删除为止; 结束;
- 或使用
- 在安装新版本之前,您可以使用自己的代码删除目标文件,在文件消失之前不允许继续
尽管我仍然相信代码至少应该允许中止[文件] 来源:“来源:C:\SampleApplicationData\*”;DestDir:“{app}\SampleApp”\ 标志:recursesubdirs createallsubdirs;安装前:强制删除 [守则] 程序强制删除; 变量 文件名:字符串; 删除:布尔值; 开始 文件名:=ExpandConstant(当前文件名); 重复 如果文件不存在(文件名),则 开始 日志(格式('文件%s不存在',[文件名]); 已删除:=真; 结束 其他的 如果删除文件(文件名),则 开始 日志(格式('文件%s已删除',[文件名]); 已删除:=真; 结束 其他的 开始 MsgBox(格式('Error deleting%s',[FileName]),mbError,MB_OK); 删除:=假; 结束; 直至删除为止; 结束;
- 或使用
- 我认为您无法更改该消息框
有两种选择:
DeleteFile
成功了,但文件仍然存在?当显示错误时,您是否检查了文件是否仍然存在替换日志(格式('文件%s已删除',[FileName])代码>带有日志(格式('文件%s已删除-存在?%d',[FileName,FileExists(FileName)])
并发布新日志。您可以尝试使用SaveStringToFile
检查是否可以创建文件。如果您使用自己的代码删除文件,并且任何文件都在使用中,则可以提示重试,而无需取消/跳过选项。尝试方式,用户将不得不继续尝试,直到文件最终被删除。然后安装将继续进行,不会出现任何问题,因为它将安装到一个空文件夹中。这不是你想要的吗?请看我更新的答案(这与我最初提出的解决方案有点不同/更好/更简单)。我已经在本地计算机上成功地测试了你的代码,但现在我已经在我们的测试环境中试过了。现在我收到一条新的错误消息,在尝试重命名目标目录中的文件时出错:MoveFile失败;代码183。如果文件已存在,则无法创建该文件。我得到一个弹出窗口,就像在第一篇文章(重试、跳过、取消)中一样。您删除文件的代码已经完成,没有任何错误,并且该文件在networkfolder中不再存在。我认为它被锁定在后台的某个地方,因为第二个客户端上打开了应用程序。所以DeleteFile
成功了,但文件仍然存在?当显示错误时,您是否检查了文件是否仍然存在替换日志(格式('文件%s已删除',[FileName])代码>带有日志(格式('文件%s已删除-存在?%d',[FileName,FileExists(FileName)])
并发布新日志。您可以尝试使用SaveStringToFile
检查是否可以创建该文件。