Inno Setup:如何在“运行”部分或“运行”部分之前运行代码过程?

时间:2014-10-08 13:12:59

标签: inno-setup

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

我有以下情况:

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

[Components]
Name: "updateDatabase";  Description: "Update Database";  Types: custom; \
    Flags: checkablealone disablenouninstallwarning

我在Code部分中有一个程序,如果用户选择此选项,则在运行部分中执行,然后再安装新程序。

[Code]
procedure RemoveOldDatabase();
begin
...
end;

[Run]
**--> Here I want to call RemoveOldDatabase if Components: updateDatabase is checked**
Filename: "database.exe"; StatusMsg: "Installing new database..."; Components: updateDatabase

新数据库的安装工作正常。问题是我想在安装新程序之前删除旧程序,调用程序RemoveOldDatabase

只能使用Inno Setup吗?

感谢。

1 个答案:

答案 0 :(得分:6)

在我看来,一种非常简单且仍然具有描述性的方法是将您的过程作为BeforeInstall部分条目的[Run]参数函数执行。 BeforeInstall参数函数在处理条目之前执行一次(并且仅在处理条目时执行,在您的情况下是在选择组件时)。你会写这个:

[Run]
Filename: "database.exe"; Components: UpdateDatabase; BeforeInstall: RemoveOldDatabase

[Code]
procedure RemoveOldDatabase;
begin
  { ... }
end;