我像这样从dll导出一个函数:
function IsClientLaunched : Boolean;
external 'IsClientStarted@files:IsStart.dll stdcall setuponly';我需要这个函数来检查我的应用程序是否已经在运行。如果正在运行,则返回True,如果没有返回false。我需要做的是,根据该函数的结果,我必须使用自定义消息和2个按钮显示自定义窗口:Continue和Cancel。因此,如果我关闭应用程序并按Continue键,那么安装过程就会继续进行。如果我按下Cancel,那么安装程序就会完成它的工作并关闭。问题是,我不知道如何在所有向导页之前显示自定义窗口,以及是否可能这样做?
此外,我还使用ISSI显示启动屏幕:
#define ISSI_Splash "C:\InnoSetupProject\Images\client.bmp"
#define ISSI_Splash_T 3
#define ISSI_Splash_X 500
#define ISSI_Splash_Y 220 这也有一个问题。如果我在第一个向导页面之前显示MsgBox对话框,并在其上按Cancel,我希望我的安装程序关闭,但它会显示启动屏幕,然后关闭。如果我需要InitializeSetup的话,我可以取消它吗?
发布于 2020-03-31 19:42:10
使用以下代码:
Is it possible to check if program is already running before trying to install it? (Inno Setup)
(这是你的问题!)
只需将IsAppRunning替换为IsClientLaunched即可。
不过,现在的问题是,您是否需要您的自定义IsClientLaunched。您可以使用IsAppRunning代替。
发布于 2020-03-31 18:37:26
根据CreateCustomPage文档,创建自定义页面的参数如下:
function CreateCustomPage(const AfterID: Integer;
const ACaption,
ADescription: String): TWizardPage;如您所见,您正在提供AfterID,这意味着您可以告诉它在之后显示一个自定义页面(一个特定的内置页面)。
但是,您考虑过使用PrepareToInstall吗?上面写着:
您可以使用此事件函数检测和安装缺少的先决条件和/或关闭即将更新的任何应用程序。
所以也许你可以在那里做测试,并显示任何需要的弹出消息框。然后,根据答复,您可以返回适当的错误消息。文件解释说。
也许还有其他的方法来做你想做的事。
https://stackoverflow.com/questions/60955902
复制相似问题