【问题标题】:What is the most reliable way to check for firefox installation?检查Firefox安装的最可靠方法是什么?
【发布时间】:2011-08-20 12:25:27
【问题描述】:

我正在制作一个与 Firefox 扩展捆绑在一起的软件。在我的安装脚本中,我想提示用户天气他想安装扩展。但为此我需要:

  1. 一种判断是否安装了 firefox 的方法
  2. 一种判断安装了哪个版本的 Firefox 的方法

我将如何在 InnoSetup 或 C# 中做这两件事?我尝试手动检查默认 firefox 安装目录的路径或检查注册表中的卸载记录。我认为这些方法根本不可靠。

【问题讨论】:

    标签: firefox installation inno-setup


    【解决方案1】:

    推荐的方法是检查HKEY_LOCAL_MACHINE\SOFTWARE\Mozilla\Mozilla Firefox 注册表项是否存在。每个安装的版本都会有一个子项。如果您是偏执狂,您还可以检查值 HKEY_LOCAL_MACHINE\SOFTWARE\Mozilla\Mozilla Firefox\<version>\Main\PathToExe - 如果该文件存在,则说明 Firefox 已真正安装并且您没有查看过时的注册表项。

    请注意,只有在实际使用了安装程序时,您才能检测到 Firefox 安装。您始终可以手动“安装”Firefox,只需使用 7zip 将安装程序可执行文件解压缩到任何目录即可。每夜构建也可以作为更容易解压缩的常规 zip 文件提供。这可以正常工作,但不会添加任何允许您找到此安装的注册表项。

    【讨论】:

    • 我应该补充一点,这个路径是 HKEY_LOCAL_MACHINE\SOFTWARE\Wow6432Node\Mozilla\Mozilla Firefox for 64bit windows。
    • 是的,如果您从 x64 应用程序访问注册表(请参阅support.microsoft.com/kb/896459)。请注意,x64 版本的 Firefox 应该很快就会推出,然后您必须检查这两个位置。
    • 我看到一个用户的机器在 HKLM 中没有任何东西,但在 HKCU 下却有条目。现在是否可以像 Chrome 一样只在用户目录下安装 Firefox?
    • @Rory:如果使用了安装程序,您只能检测到 Firefox 安装(我将在答案中添加注释)。任何人都可以简单地使用 7zip 将可执行文件解压缩到他们想要的任何目录中 - 这可以正常工作,不需要管理员权限。此外,还有无需安装的 Firefox Portable。但如果您使用的是安装程序,据我所知,仅支持全局安装。
    • 2016 年的注释(FF x64 已经发布了一段时间):Wow6432Node 检查似乎没有必要。安装路径仍在常规 reg 键上。
    【解决方案2】:

    这里是创建的密钥的简短列表(通过 Firefox 27.0.1 安装)

    HKLM\SOFTWARE\Classes\FirefoxHTML\
    HKLM\SOFTWARE\Classes\FirefoxURL\
    HKLM\SOFTWARE\Clients\StartMenuInternet\FIREFOX.EXE\
    HKLM\SOFTWARE\Microsoft\Windows\CurrentVersion\App Paths\firefox.exe\
    HKLM\SOFTWARE\Microsoft\Windows\CurrentVersion\App Paths\firefox.exe\Path
    HKLM\SOFTWARE\Wow6432Node\Microsoft\Windows\CurrentVersion\Uninstall\Mozilla Firefox 27.0.1 (x86 en-US)\
    HKLM\SOFTWARE\Wow6432Node\Microsoft\Windows\CurrentVersion\App Paths\firefox.exe\
    HKLM\SOFTWARE\Wow6432Node\Mozilla\Mozilla Firefox\27.0.1 (en-US)\
    HKLM\SOFTWARE\Wow6432Node\Mozilla\Mozilla Firefox 27.0.1\
    HKLM\SOFTWARE\Wow6432Node\Clients\StartMenuInternet\FIREFOX.EXE\
    

    我们的一个客户没有“卸载”,因此我们将使用该列表中的另一个。 我将使用:“当至少存在以下密钥之一时安装firefox:”

    HKLM\SOFTWARE\Mozilla\Mozilla Firefox\
    HKLM\SOFTWARE\Clients\StartMenuInternet\FIREFOX.EXE\
    HKLM\SOFTWARE\Wow6432Node\Mozilla\Mozilla Firefox\
    HKLM\SOFTWARE\Wow6432Node\Clients\StartMenuInternet\FIREFOX.EXE\
    

    【讨论】:

      【解决方案3】:

      我认为HKLM\SOFTWARE\Clients\StartMenuInternet\FIREFOX.EXE 密钥不依赖于操作系统位,所以我建议这样做。

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2016-01-15
        • 1970-01-01
        • 1970-01-01
        • 2019-09-22
        • 1970-01-01
        • 2012-08-31
        相关资源
        最近更新 更多