Как проверить, установлен ли Adobe Acrobat Reader

У меня есть этот код, который предлагает пользователю установить программу чтения PDF-файлов Foxit. Как я могу проверить, установлен ли на компьютере Adobe Acrobat Reader?

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

Если Adobe Acrobat Reader не найден, я хочу начать установку Foxit Reader.


person Winflash    schedule 10.04.2013    source источник
comment
Добро пожаловать в StackOverflow. Этот вопрос похож на запрос напишите этот код для меня, и SO не место для этого. Вы должны показать свои усилия и задать конкретные вопросы, если они у вас возникнут во время работы.   -  person jachguate    schedule 10.04.2013
comment
Вот начало: function AcrobatExists: Boolean;. В примерах есть примеры функций, а в онлайн-документации есть информация о проверке установленных вещей (хотя и не специально для Foxit), которую вы можете использовать для начала работы. (В файле справки есть ссылка на онлайн-документацию.) После того, как вы это сделаете, вы можете отредактировать свой вопрос, чтобы он был более конкретным, и опубликовать то, что вы сделали до сих пор, чтобы попытаться решить его. Удачи. :-)   -  person Ken White    schedule 10.04.2013
comment
Я предлагаю лучше альтернативный вопрос: как определить, была ли уже установлена ​​ЛЮБАЯ программа для чтения .pdf (а не только Acrobat), путем проверки ассоциаций файлов. Есть нечто большее, чем просто одно, о чем вам следует знать, поскольку вы все равно планируете самостоятельно установить одну из альтернатив.   -  person Miral    schedule 11.04.2013


Ответы (1)


Попробуйте этот скрипт Acrobat Reader - обнаружение установленной версии:

[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;
person Andrey Volk    schedule 14.04.2013
comment
Возможно, лучше было бы сделать Check функцию (даже OP просил об этом). Но кроме этого, будет лучше следовать примечанию Мирала, что лучше проверить, зарегистрировано ли приложение с расширением файла * .pdf в Shell, а не просто проверять Acrobat Reader (даже если OP имеет такое имя функции Check). - person TLama; 14.04.2013
comment
Для вашего обновления не хватило бы Result := RegQueryStringValue(...); в функции проверки (просто проверьте, существует ли значение ключа реестра)? - person TLama; 14.04.2013