Перейти из форума на сайт.

НовостиФайловые архивы
ПоискАктивные темыТоп лист
ПравилаКто в on-line?
Вход Забыли пароль? Первый раз на этом сайте? Регистрация
Компьютерный форум Ru.Board » Компьютеры » Программы » Inno Setup - создание инсталляционных пакетов (Часть 15)

Модерирует : gyra, Maz

 Версия для печати • ПодписатьсяДобавить в закладки
На первую страницук этому сообщениюк последнему сообщению

Открыть новую тему     Написать ответ в эту тему

iglezz

Advanced Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору


Код:
#define APPNAME "RunFromIni"
[Setup]
AppName={#APPNAME}
OutputBaseFileName={#APPNAME}
OutputDir=.
AppVersion=0.1
DefaultDirName={src}
PrivilegesRequired=lowest
 
[Code]
function C2P(S: String): String;
begin
  StringChangeEx(S, '\n', #13, True);
  StringChangeEx(S, '\r', #10, True);
  StringChangeEx(S, '\t', #09, True);
  Result := S;
end;
 
 
procedure SplitExecString(const S: String; var Path, Parameters: String);
var
  SplitChar: String;
  SplitPos, ShiftPos: Integer;
begin
  case (S[1]) of
  '"' : begin SplitChar := '"' ; ShiftPos := 1; end;
  '''': begin SplitChar := ''''; ShiftPos := 1; end;
  else  begin SplitChar := ' ' ; ShiftPos := 0; end;
  end;
 
  SplitPos := Pos(SplitChar, Copy(S, 2, 65535));
   
  if SplitPos = 0 then SplitPos := Length(S);
   
  Path := ExpandFileName(Copy(S, 1+ShiftPos, SplitPos-ShiftPos));
  Parameters := Copy(S, SplitPos+ShiftPos+1, 65535);
end;
 
 
procedure RunFromIni(const IniFile, SectionName: String; const MaxCount: Integer);
var
  ExecString, ExecPath, ExecParameters: String;
  Count, ResultCode: Integer;
begin
  for Count := 0 to MaxCount do
  begin
    ExecString := Trim(GetIniString(SectionName, IntToStr(Count), '', IniFile));
     
    if ExecString <> ''  then  
    begin
      SplitExecString(ExecString, ExecPath, ExecParameters);
 
      MsgBox(Format(C2P('count:\t%d\ninput:\t<%s>\n\nexec:\t<%s>\nparam:\t<%s>'), [Count, ExecString, ExecPath, ExecParameters]), mbInformation, MB_OK);
      //Exec(ExecPath, ExecParameters, '', SW_SHOW, ewWaitUntilTerminated, ResultCode);
    end;
  end;
end;
 
 
function InitializeSetup: Boolean;
begin
  RunFromIni(ChangeFileExt(ExpandConstant('{srcexe}'),'.ini'), 'setup', 256);
  Result:= false;
end;

 
скрипт для программы-заглушки для проверки передаваемых параметров:

Код:
#define APPNAME "ExecTest"
[Setup]
AppName={#APPNAME}
OutputBaseFileName={#APPNAME}
OutputDir=.
AppVersion=0.1
DefaultDirName={src}
PrivilegesRequired=lowest
 
[Code]
var
  Count: Integer;
  Params: String;
 
function C2P(S: String): String;
begin
  StringChangeEx(S, '\n', #13, True);
  StringChangeEx(S, '\r', #10, True);
  StringChangeEx(S, '\t', #09, True);
  Result := S;
end;
 
 
function InitializeSetup: Boolean;
begin
  for Count := 2 to ParamCount() do Params := Params + ParamStr(Count) + ' ';
  MsgBox(Format(C2P('cur.dir:\t%s\nexec:\t%s\n#params:\t%d\nparams:\t%s'), [GetCurrentDir(), ExpandConstant('{srcexe}'), ParamCount()-1, Params]), mbInformation, MB_OK);
  Result:= false;
end;

Всего записей: 1521 | Зарегистр. 18-02-2003 | Отправлено: 02:36 17-11-2022 | Исправлено: iglezz, 16:31 17-11-2022
Открыть новую тему     Написать ответ в эту тему

На первую страницук этому сообщениюк последнему сообщению

Компьютерный форум Ru.Board » Компьютеры » Программы » Inno Setup - создание инсталляционных пакетов (Часть 15)


Реклама на форуме Ru.Board.

Powered by Ikonboard "v2.1.7b" © 2000 Ikonboard.com
Modified by Ru.B0ard
© Ru.B0ard 2000-2024

BitCoin: 1NGG1chHtUvrtEqjeerQCKDMUi6S6CG4iC

Рейтинг.ru