2015-02-09 67 views
1

這可能是一個經常被問到的Q.但我到目前爲止還沒有遇到任何幫助。爲應用程序創建MSI包時,我需要檢查是否安裝了JDK 1.7.0。如果是,則繼續進行安裝,否則顯示一條消息,在用戶許可後,該消息將重定向到安裝URL以安裝先決條件。Visual Studio啓動條件

我已經使用「添加註冊表搜索」,但我提供的條件總是失敗或總是通過。下面是我用的參數:

添加註冊表搜索

物業:JDKEXISTS

REGKEY:SOFTWARE \ JavaSoft的\ Java開發工具包

根:vsdrrHKLM

價值:currentversion

LAUNCH CONDI TION:

條件:(JDKEXISTS = 「已安裝」)

InstallUrl:鏈接直接從

信息下載:您的系統需要Java 1.7.0或更高版本。立即下載?

但是,它不工作。有人可以幫助我嗎?

回答

1

如果註冊表搜索在註冊表中找到該項目,則您需要使用的所有條件都是JDKEXISTS。這就夠了。我不知道這個值是否真的是「已安裝」,這是你正在檢查的內容,但你並不需要它。如果未找到該值,則JDKEXISTS將不存在(並且將爲false)。

這看起來像一個VS安裝項目。在VS安裝項目註冊表搜索中也有一些錯誤。沒有辦法搜索本機64位註冊表,以防萬一您的密鑰在哪裏。註冊表搜索始終搜索32位註冊表。您需要編輯您的MSI文件(使用Orca)修改RegLocator表的Type值以添加64位搜索選項(添加16)。 https://msdn.microsoft.com/en-us/library/aa371171(v=vs.85).aspx

+0

即使嘗試使用「添加文件搜索」條件並指定要在[ProgramFiles64Folder]下查找的搜索深度爲3的唯一文件名,並在條件部分中簡單提及'NOT JDKEXISTS',也不起作用。顯然,如果安裝了先決條件(即,跳過JDK安裝),則運行良好,但如果未安裝它,它甚至會跳過JDK安裝。我猜「不JDKEXISTS」不是合適的條件。 有點兒在這兒亂七八糟! – Dibendu 2015-02-16 14:18:32

+0

不知道你在做什麼,但我可以在[SystemFolder]中找到notepad.exe,其深度爲0,[ProgramFiles64Folder]中也有一個文件。我通過將歡迎對話框中的文本設置爲....來測試。[GOTINTEL]安裝程序將引導您thro ...其中GOTINTEL是屬性名稱,並且它返回文件的路徑。您的搜索可能正在工作,但進一步的情況並非如此。 – PhilDW 2015-02-16 22:49:32

+0

好的,現在我想將用戶重定向到安裝URL,以防JDK未安裝。我應該如何設定條件? – Dibendu 2015-02-18 07:38:21