2011-08-20 90 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\ 
相關問題