我正在制作一款与Firefox扩展捆绑的软件。在我的安装脚本中,我想询问用户是否要安装该扩展。但是,我需要以下两点:
- 判断Firefox是否已经安装
- 判断Firefox的版本号
在InnoSetup或C#中,我应该如何实现这两个功能?我尝试手动检查默认Firefox安装目录的路径或检查注册表中的卸载记录,但我认为这些方法都不够可靠。
我正在制作一款与Firefox扩展捆绑的软件。在我的安装脚本中,我想询问用户是否要安装该扩展。但是,我需要以下两点:
在InnoSetup或C#中,我应该如何实现这两个功能?我尝试手动检查默认Firefox安装目录的路径或检查注册表中的卸载记录,但我认为这些方法都不够可靠。
HKEY_LOCAL_MACHINE\SOFTWARE\Mozilla\Mozilla Firefox
注册表项。每个安装的版本都会有一个子键。如果您很谨慎,还可以检查值 HKEY_LOCAL_MACHINE\SOFTWARE\Mozilla\Mozilla Firefox\<version>\Main\PathToExe
- 如果该文件存在,则 Firefox 真正安装了并且您没有查看到过期的注册表项。以下是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\
HKLM\SOFTWARE\Mozilla\Mozilla Firefox\
HKLM\SOFTWARE\Clients\StartMenuInternet\FIREFOX.EXE\
HKLM\SOFTWARE\Wow6432Node\Mozilla\Mozilla Firefox\
HKLM\SOFTWARE\Wow6432Node\Clients\StartMenuInternet\FIREFOX.EXE\
我认为 HKLM\SOFTWARE\Clients\StartMenuInternet\FIREFOX.EXE
键不依赖于操作系统位数,因此我建议使用这个。
Wow6432Node
检查似乎是多余的。安装路径仍在常规注册表键中。 - thomasbWow6432Node
下查找。 - Wladimir Palant