2011-08-20 58 views
4

我正在制作一个与Firefox扩展捆绑在一起的软件。在我的安装脚本中,我想提示用户想要安装扩展的天气。但我需要:检查Firefox安装最可靠的方法是什么?

  1. 的一种方式或者说,如果是安装了Firefox不
  2. 办法告诉哪个Firefox的版本安装

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

回答

6

推荐的方法是检查HKEY_LOCAL_MACHINE\SOFTWARE\Mozilla\Mozilla Firefox注册表项是否存在。每个安装的版本都会有一个子密钥。如果你是偏执狂的,你也可以检查值HKEY_LOCAL_MACHINE\SOFTWARE\Mozilla\Mozilla Firefox\<version>\Main\PathToExe - 如果该文件存在,那么Firefox是真正安装的,你没有看到过时的注册表项。

请注意,只有在实际使用安装程序的情况下,才能检测到Firefox安装。您可以随时手动“安装”Firefox,只需将安装可执行文件用7zip解压到任何目录即可。夜间版本也可以作为普通的zip文件使用,这些文件更容易打开。这将工作得很好,但不会添加任何注册表项,这将允许您找到此安装。

+2

我要补充一点,这个路径是HKEY_LOCAL_MACHINE \ SOFTWARE \ Wow6432Node \ Mozilla的\ Mozilla Firefox的64位Windows。 – c0ldcrow

+0

是的,如果您从x64应用程序访问注册表(请参阅http://support.microsoft.com/kb/896459)。请注意,Firefox的x64版本即将推出,那么您将不得不同时查看两个位置。 –

+0

我见过一个用户的机器,他在HKLM中没有任何东西,但在HKCU下有条目。现在是否可以在Chrome的用户目录下安装Firefox? – Rory

3

我认为HKLM\SOFTWARE\Clients\StartMenuInternet\FIREFOX.EXE键不依赖于OS位,所以我建议这一点。

3

这里(火狐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\ 
相关问题