Installation InnoSetup:Pascal脚本,用于在文件/文件夹存在时取消安装

Installation InnoSetup:Pascal脚本,用于在文件/文件夹存在时取消安装,installation,inno-setup,Installation,Inno Setup,在InnoSetup中,我在InstallRun部分使用了几个文件操作。如果这些都正确执行,没有问题,那么某个临时文件夹应该已经被删除 如果出现问题,则临时文件夹仍然存在。在这种情况下,我希望通过显示我选择的错误消息的消息框取消设置 由于我还没有使用Pascal脚本的经验,我恳请您为我提供一个这样做的示例脚本 提前谢谢 补充: 我现在解释一下我需要这个的原因。该场景正在更新现有版本,即Windows服务应用程序。在更新这些文件之前,我必须先卸载这些服务。为此,我使用安装包中自己的命令行。其他新文

在InnoSetup中,我在InstallRun部分使用了几个文件操作。如果这些都正确执行,没有问题,那么某个临时文件夹应该已经被删除

如果出现问题,则临时文件夹仍然存在。在这种情况下,我希望通过显示我选择的错误消息的消息框取消设置

由于我还没有使用Pascal脚本的经验,我恳请您为我提供一个这样做的示例脚本

提前谢谢

补充:
我现在解释一下我需要这个的原因。该场景正在更新现有版本,即Windows服务应用程序。在更新这些文件之前,我必须先卸载这些服务。为此,我使用安装包中自己的命令行。其他新文件将临时解压缩到临时文件夹(应用程序文件夹的子文件夹)。卸载Windows服务后,新文件将从临时文件夹移动到应用文件夹。如果这里出现问题,我想取消设置并向用户显示错误消息。我可以通过检查temp文件夹是否仍然存在来判断是否出了问题。

假设您指的是
[Run]
部分,那么晚些时候就不可能取消安装

相反,您应该考虑使用
preparetoall
。在这种情况下,您所需要做的就是停止并注销旧服务,或者直接通过API,或者根据您的选择调用旧服务EXE上的命令。(对于新安装,请不要忘记在服务尚不存在时处理此情况。)

在此之后,
[文件]
将正常替换文件,然后您可以
[运行]
或使用代码(通过
安装后
游标更改(ssPostInstall)
,具体取决于您希望的时间)重新注册并启动服务


不需要乱动临时文件夹——这很好,因为这也会导致卸载问题。

什么是
InstallRun
部分?您运行什么类型的东西?它依赖于刚刚安装的应用程序,还是先决条件?一个更简单(也更好)的选项是提取并运行
preparetoanstall()
事件函数中的文件。如果你能回答我的观点,我可以做一个完整的回答。@Deanna:我已经更新了我的问题,解释了我为什么需要这个。如果您需要更多信息,请告诉我。卸载当前运行的Windows服务的过程涉及的不仅仅是标准的卸载,因此我需要使用安装程序包中的自定义生成命令行EXE。正如我所说,我通常会将此类功能编译到服务可执行文件本身。然后,我可以使用“-stop-uninstall”这样的参数运行它(如前所述,从PrepareToInstall)来停止并删除它本身。或者你可以,如果你愿意的话。