Inno Setup Чтение значения из .ini - PullRequest
3 голосов
/ 21 марта 2012

Я хочу прочитать значение из файла .ini. Затем напишите условие - если это значение равно «1», тогда выполните sth (выполните действие). Я попытался getinistring , но я не получил никаких значений (просто отобразить значение по умолчанию). И я не знаю, как реализовать readini в моем коде ниже. Спасибо за любую помощь, IS Beginner:)

// редактировать Вот код:

#include ReadReg(HKEY_LOCAL_MACHINE,'Software\Sherlock Software\InnoTools\Downloader','ScriptPath','');
#include ReadReg(HKEY_LOCAL_MACHINE,'Software\Sherlock Software\InnoTools\Tray','ScriptPath','');

[Languages]
Name: english; MessagesFile: compiler:Default.isl

[Code]
function isxdl_Download(hWnd: Integer; URL, Filename: AnsiString): Integer;
external 'isxdl_Download@files:isxdl.dll stdcall';
function isxdl_SetOption(Option, Value: AnsiString): Integer;
external 'isxdl_SetOption@files:isxdl.dll stdcall';
var
a :string;
b :string;

//Downloading a component depending on component choice in another setup(read from .ini)
procedure CurStepChanged(CurStep: TSetupStep);
begin
a:=GetIniString('Select', 'First', 'false', '{pf}/SP_Settings.ini');
b:=GetIniString('Select', 'Should', 'true', {pf}\SP_Settings.ini');

begin
if CompareStr(a,b)=0 then
  if CurStep=ssInstall then begin
      isxdl_SetOption('title', 'File Download');
      isxdl_SetOption('label', 'Download');
      isxdl_SetOption('description', 'Setup is downloading a file.');
      isxdl_Download(0,'url', ExpandConstant('{app}\x.rar'));   
      end;      
end;
end;

[Files]
Source: C:\Documents and Settings\user\Pulpit\XML\Project\isxdl.dll; DestDir: {tmp}; Flags: dontcopy

1 Ответ

6 голосов
/ 21 марта 2012

Существуют функции Pascal Script, такие как GetIniInt или GetIniString, которые вы можете использовать для чтения из INI-файла. См. эту ссылку .

Я хотел бы отметить, что я написал этот ответ до того, как ОП изменил свой вопрос, чтобы сказать нам, что он уже попробовал функции GetIniString и ReadIni. Так что да: я прочитал вопрос, прежде чем написать этот ответ: -)

Из кода, который вы разместили, я вижу, что вы пытаетесь прочитать INI-файл из папки Program Files. Это, однако, работает только при использовании функции ExpandConstant, поэтому она должна читать

a:=GetIniString('Select', 'First', 'false', ExpandConstant('{pf}') + '\SP_Settings.ini');
b:=GetIniString('Select', 'Should', 'true', ExpandConstant('{pf}') + '\SP_Settings.ini');
...