2013-04-10 173 views
1

我有這樣的代碼,提示用戶安裝福昕PDF閱讀器。如何檢查電腦是否安裝了Adobe Acrobat Reader?如何檢查是否安裝Adobe Acrobat Reader安裝

[Components] 
Name: "foxit"; Description: "Foxit"; Types: "games"; ExtraDiskSpaceRequired: "30000000"; Check: "not AcrobatExists"; 

如果找不到Adobe Acrobat Reader,那麼我想開始安裝Foxit Reader。

+1

歡迎StackOverflow上。這個問題就像是爲我的請求寫了一個這樣的代碼,而SO不是那個網站。如果你有一段時間做你的工作,你必須展示你的努力並提出具體的問題。 – jachguate 2013-04-10 00:13:06

+1

這是一個開始:'函數AcrobatExists:布爾;'。這些例子中有一些函數的例子,在線文檔中有關於檢查正在安裝的東西的信息(儘管不是福昕特定的),您可以使用它來幫助您開始。 (在幫助文件中有一個到在線文檔的鏈接。)一旦你完成了,你可以編輯你的問題來更具體,併發布你迄今爲止所做的嘗試和解決它。祝你好運。 :-) – 2013-04-10 00:24:13

+0

我認爲一個更好的替代問題將是如何檢測是否有已安裝(不只是Acrobat中)的.pdf閱讀器,通過檢查文件關聯。這不僅僅是一個,你應該知道,因爲你打算自己安裝一個替代方案。 – Miral 2013-04-11 09:51:17

回答

2

試試這個Acrobat Reader - Detect installed version腳本:

[Setup] 
AppName=Acrobat 
AppVerName=Acrobat 
DefaultDirName={pf}\Acrobat 
DisableStartupPrompt=true 
Uninstallable=false 
DisableDirPage=true 
OutputBaseFilename=Acrobat 
CreateAppDir=false 


[Code] 

function GetAcrobatReaderVersion(): String; 
var 
    sVersion: String; 
begin 
    sVersion := ''; 
    RegQueryStringValue(HKLM, 'SOFTWARE\Microsoft\Windows\CurrentVersion\App Paths\AcroRd32.exe', 
    '', sVersion); 
    GetVersionNumbersString(sVersion , sVersion); 
    Result := sVersion; 
end; 


function NextButtonClick(CurPage: Integer): Boolean; 
begin 

    // by default go to next page 
    Result := true; 

    if CurPage = wpWelcome then 
    begin 

    if Length(GetAcrobatReaderVersion()) = 0 then 
    begin 
     MsgBox('There is not installed Acrobat reader', mbInformation, MB_OK); 
     Result := false; 
    end 
    else 
     MsgBox('Acrobat reader installed is version ' + GetAcrobatReaderVersion() , 
      mbInformation, MB_OK); 

    end; 

end; 

你可以採取GetAcrobatReaderVersion(),並作出檢查功能,例如:

function AcrobatExists(): Boolean; 
begin 
    result := Length(GetAcrobatReaderVersion()) <> 0; 
end; 
+0

做一個Check函數可能會更好(甚至OP要求)。但除了遵循Miral的說明外,最好還是檢查* .pdf文件擴展名是否在Shell中註冊了應用程序,而不是檢查Acrobat Reader(即使OP具有類似的Check功能名稱)。 – TLama 2013-04-14 13:31:19

+0

對於你的更新,僅僅在檢查函數中有結果:= RegQueryStringValue(...);(只是檢查註冊表鍵值是否存在)而已? – TLama 2013-04-14 13:42:00