Inno setup Inno设置:如何在运行部分或运行前部分运行代码过程?

Inno setup Inno设置:如何在运行部分或运行前部分运行代码过程?,inno-setup,Inno Setup,我想在安装新数据库之前删除旧数据库,以便为用户更新它 我有以下情况: 在我的组件部分中,我为用户提供了一个选项: [Components] Name: "updateDatabase"; Description: "Update Database"; Types: custom; \ Flags: checkablealone disablenouninstallwarning 我在code部分中有一个过程,如果用户选择了这个选项,在安装新选项之前,在run部分中执行这个过程 [代

我想在安装新数据库之前删除旧数据库,以便为用户更新它

我有以下情况:

在我的
组件
部分中,我为用户提供了一个选项:

[Components]
Name: "updateDatabase";  Description: "Update Database";  Types: custom; \
    Flags: checkablealone disablenouninstallwarning
我在
code
部分中有一个过程,如果用户选择了这个选项,在安装新选项之前,在run部分中执行这个过程

[代码]
过程RemoveOldDatabase();
开始
...
结束;
[运行]
**-->如果选中Components:updateDatabase,我想在这里调用RemoveOldDatabase**
文件名:“database.exe”;StatusMsg:“正在安装新数据库…”;组件:updateDatabase
新数据库的安装工作正常。问题是我想在安装新数据库之前删除旧数据库,调用过程
RemoveOldDatabase

是否可以只使用Inno设置


谢谢。

在我看来,有一种方法非常简单,仍然是描述性的,那就是将您的过程作为节条目的参数函数来执行。参数函数在处理条目之前执行一次(并且仅在处理条目时执行一次,在您的情况下,就是在选择组件时)。你可以这样写:

[运行]
文件名:“database.exe”;组件:UpdateDatabase;安装前:RemoveOldDatabase
[守则]
程序删除旧数据库;
开始
{ ... }
结束;

如果您只想删除文件或目录,请使用
[InstallDelete]
部分而不是过程。安装过程中的第一件事就是删除你选择的文件。问题是我必须删除超过个目录文件。我必须删除旧的数据库程序本身,调用windows命令。举例来说,如果我在NextButtonClick过程中调用我的代码部分,它就可以正常工作,但是我有点不知道如何在运行部分之前调用它。谢谢。我知道BeforeInstall参数,但不知道我可以在其中调用过程。谢谢,不客气!这些参数就是为了这个目的而存在的。这是非常令人惊讶的,但是尽管
[Run]部分的帮助
()没有将
安装前
安装后
指定为有效选项,但这两个选项在本节中都很有效。