2013-04-10 224 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