在Inno Setup中从过程调用函数?

轴心

我正在尝试检查刚刚安装的服务是否正在运行,然后在Inno Setup中退出。我需要在执行之后立即执行一个程序,因此我试图在run参数中调用一个使用BeforeInstall中的函数的过程。

我从另一篇文章中找到了这个示例,我试图对其进行更改,以检查我的服务在安装后但在执行运行线之前是否正在运行。我是pascal的新手,我似乎无法弄清楚如何从过程中调用函数。任何帮助,将不胜感激。谢谢!

[Run]
; Launch the Setup App here
Filename: "{app}\MyApp.exe"; BeforeInstall: AfterInstallProc

[Code]
procedure AfterInstallProc;
begin
  result := not IsAppRunning('MyService.exe');
  if not result then
    MsgBox('Error message here', mbError, MB_OK);
end;

function IsAppRunning(const FileName : string): Boolean;
var
  FSWbemLocator: Variant;
  FWMIService : Variant;
  FWbemObjectSet: Variant;
begin
  Result := false;
  FSWbemLocator := CreateOleObject('WBEMScripting.SWBEMLocator');
  FWMIService := FSWbemLocator.ConnectServer('', 'root\CIMV2', '', '');
  FWbemObjectSet := FWMIService.ExecQuery(Format('SELECT Name FROM Win32_Process Where Name="%s"',[FileName]));
  Result := (FWbemObjectSet.Count > 0);
  FWbemObjectSet := Unassigned;
  FWMIService := Unassigned;
  FSWbemLocator := Unassigned;
end;
肯·怀特

您需要更改代码的排列方式,以便IsAppRunningAfterInstall尝试使用它之前就知道它-否则编译器将不知道它的存在。(它不会向前看,但Delphi的编译器也不会。)

您还有第二个问题(从您的问题中看不出来)。过程没有Result函数所具有的预定义变量,因为过程没有结果。您还需要在AfterInstallProc过程中声明一个局部变量,以避免发生variable "Result" is not declared错误。

[Run]
; Launch the Setup App here
Filename: "{app}\MyApp.exe"; BeforeInstall: AfterInstallProc

[Code]
function IsAppRunning(const FileName : string): Boolean;
var
  FSWbemLocator: Variant;
  FWMIService : Variant;
  FWbemObjectSet: Variant;
begin
  Result := false;
  FSWbemLocator := CreateOleObject('WBEMScripting.SWBEMLocator');
  FWMIService := FSWbemLocator.ConnectServer('', 'root\CIMV2', '', '');
  FWbemObjectSet := FWMIService.ExecQuery(Format('SELECT Name FROM Win32_Process Where Name="%s"',[FileName]));
  Result := (FWbemObjectSet.Count > 0);
  FWbemObjectSet := Unassigned;
  FWMIService := Unassigned;
  FSWbemLocator := Unassigned;
end;

procedure AfterInstallProc;
var 
  Result: Boolean;
begin
  Result := not IsAppRunning('MyService.exe');
  if not Result then
    MsgBox('Error message here', mbError, MB_OK);
end;

本文收集自互联网,转载请注明来源。

如有侵权,请联系[email protected] 删除。

编辑于
0

我来说两句

0条评论
登录后参与评论

相关文章

来自分类Dev

Inno Setup:在设置过程中重新启动

来自分类Dev

Inno Setup中较大的“选择组件”页面

来自分类Dev

如何覆盖Inno Setup中的功能?

来自分类Dev

Inno Setup语法-OR,AND

来自分类Dev

inno setup中的“ Not in a loop”错误

来自分类Dev

在Inno Setup中将{AppVersion}用作函数的参数

来自分类Dev

使用inno-setup在安装过程中显示文本

来自分类Dev

使用Inno Setup中的缓冲区调用DLL函数(GetPrivateProfileSection)

来自分类Dev

在Inno Setup中取消安装

来自分类Dev

Inno Setup中的TTreeView

来自分类Dev

Inno Setup:在安装过程中重新启动不会在重启后开始

来自分类Dev

Inno Setup中的条件DisableProgramGroupPage

来自分类Dev

在Inno Setup中创建ZIP文件

来自分类Dev

在Inno Setup中从XML导入计划的任务

来自分类Dev

在Inno Setup中复制隐藏文件

来自分类Dev

Inno Setup中AppData \ LocalLow的常量?

来自分类Dev

Inno Setup:在卸载过程中从安装程序读取文件

来自分类Dev

IsDotNetInstalled Inno Setup函数中的`MinServicePack`参数是什么

来自分类Dev

Inno Setup:在卸载过程中重新启动后删除文件夹

来自分类Dev

在Inno Setup的安装过程中写入Node app .js配置

来自分类Dev

Inno Setup:加载在安装过程中为wpInfoAfter编辑的文件

来自分类Dev

Inno Setup:加载在安装过程中为wpInfoAfter编辑的文件

来自分类Dev

减压过程何时发生,solidbreak标志在Inno Setup中如何真正起作用?

来自分类Dev

在Inno Setup中记录TWindowsVersion

来自分类Dev

Inno Setup,[运行]中参数中的空格

来自分类Dev

无法从[代码]调用Inno Setup ParseVersion

来自分类Dev

Inno Setup-如何在设置过程中从文本文件编辑特定行?

来自分类Dev

Inno Setup 中的动态密码

来自分类Dev

如何在 Inno Setup iss 文件中调用 GetNativeSystemInfo?

Related 相关文章

  1. 1

    Inno Setup:在设置过程中重新启动

  2. 2

    Inno Setup中较大的“选择组件”页面

  3. 3

    如何覆盖Inno Setup中的功能?

  4. 4

    Inno Setup语法-OR,AND

  5. 5

    inno setup中的“ Not in a loop”错误

  6. 6

    在Inno Setup中将{AppVersion}用作函数的参数

  7. 7

    使用inno-setup在安装过程中显示文本

  8. 8

    使用Inno Setup中的缓冲区调用DLL函数(GetPrivateProfileSection)

  9. 9

    在Inno Setup中取消安装

  10. 10

    Inno Setup中的TTreeView

  11. 11

    Inno Setup:在安装过程中重新启动不会在重启后开始

  12. 12

    Inno Setup中的条件DisableProgramGroupPage

  13. 13

    在Inno Setup中创建ZIP文件

  14. 14

    在Inno Setup中从XML导入计划的任务

  15. 15

    在Inno Setup中复制隐藏文件

  16. 16

    Inno Setup中AppData \ LocalLow的常量?

  17. 17

    Inno Setup:在卸载过程中从安装程序读取文件

  18. 18

    IsDotNetInstalled Inno Setup函数中的`MinServicePack`参数是什么

  19. 19

    Inno Setup:在卸载过程中重新启动后删除文件夹

  20. 20

    在Inno Setup的安装过程中写入Node app .js配置

  21. 21

    Inno Setup:加载在安装过程中为wpInfoAfter编辑的文件

  22. 22

    Inno Setup:加载在安装过程中为wpInfoAfter编辑的文件

  23. 23

    减压过程何时发生,solidbreak标志在Inno Setup中如何真正起作用?

  24. 24

    在Inno Setup中记录TWindowsVersion

  25. 25

    Inno Setup,[运行]中参数中的空格

  26. 26

    无法从[代码]调用Inno Setup ParseVersion

  27. 27

    Inno Setup-如何在设置过程中从文本文件编辑特定行?

  28. 28

    Inno Setup 中的动态密码

  29. 29

    如何在 Inno Setup iss 文件中调用 GetNativeSystemInfo?

热门标签

归档