【问题标题】:Inno Setup detect if Apache is installedInno Setup 检测是否安装了 Apache
【发布时间】:2018-12-14 17:45:07
【问题描述】:

如果计算机上安装了 Apache for Windows,是否有一种万无一失的方法可以使用 Inno Setup 进行检测?我使用的是 Apache Lounge 版本 (https://www.apachelounge.com/download/),它没有内置安装程序,但如果需要,它会安装特定服务。

我可以搜索计算机上是否存在该 Windows 服务,但我担心其他 Apache 版本可能会安装不同的服务或根本没有服务(但它可能仍在后台运行并产生干扰)。

【问题讨论】:

  • 你为什么需要它?您将如何处理这些信息?
  • 我正在尝试制作一个万无一失的安装程序,它将在 Windows 服务器上安装 Apache、PHP 和我的 Web 应用程序的脚本。如果 Apache 已经安装,它不应该自行安装(不要弄乱现有的安装)。
  • 好的,但是如果你要安装PHP到Apache,你需要修改它的配置文件,对吧?所以不仅仅是检测Apache是​​否安装,而是安装到哪里,配置文件在哪里。
  • 如果已安装,我不想安装,因为我想要一个 Apache 的独占副本。不应该有任何其他使用 Apache 运行的东西。所以我只想检查Apache是​​否已经安装,如果是,则拒绝安装。 (我们说的不是大型服务器,而是小型企业的服务器,除了这个程序之外不应运行其他任何东西)。
  • 如何检查名称中包含“apache”的任何进程?

标签: windows apache process installation inno-setup


【解决方案1】:

您可以检查名称中包含“apache”关键字的任何正在运行的进程(即使服务也是进程)。

您可以使用此答案中的代码:
How to check with Inno Setup, if a process is running at a Windows 2008 R2 64bit?

只需将查询替换为:

Format('SELECT Name FROM Win32_Process Where Name like "%%%s%%"', [FileName])

然后你可以像这样使用它:

function InitializeSetup(): Boolean;
begin
  Result := True;
  if IsAppRunning('apache') then
  begin
    MsgBox('Apache is installed and running, cannot proceed.', mbError, MB_OK);
    Result := False;
  end;
end;

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2022-10-22
    • 1970-01-01
    • 2011-05-05
    • 1970-01-01
    • 1970-01-01
    • 2023-03-22
    • 1970-01-01
    • 2022-01-24
    相关资源
    最近更新 更多