Компьютерный форум OSzone.net  

Компьютерный форум OSzone.net (http://forum.oszone.net/index.php)
-   Программирование и базы данных (http://forum.oszone.net/forumdisplay.php?f=21)
-   -   Помощь в написании примера (http://forum.oszone.net/showthread.php?t=130494)

Serega 31-01-2009 14:33 1025348

Помощь в написании примера
 
Здравствуйте, заранее извиняюсь за возможно глупую просьбу...
Только начал изучать Delphi...
Делал в своё время для себя инссталлятор-программу для создания обычного текстового файла, но с расширением .iss (скрипт для Inno Setup), решил сделать точно такое же, но с помощью Delphi, но не могу разобраться, чего-то совсем запутался...
Если не сложно, то может кто-нибудь накидает пример...
Пример скрипта на Inno Setup
читать дальше »
Код:

#define DateTime GetDateTimeString('dd/mm/yyyy года, в hh:nn:ss ', '.', ':')

[Setup]
AppName=BuildScript
AppVerName=BuildScript
VersionInfoDescription=BuildScript
DisableProgramGroupPage=yes
DisableFinishedPage=yes
DisableReadyPage=yes
CreateUninstallRegKey=no
CreateAppDir=no
Uninstallable=no
OutputBaseFilename=BuildScript
OutputDir=.
SolidCompression=yes
Compression=lzma/ultra
InternalCompressLevel=ultra

[ Code]
// пропуск страницы приветствия
procedure CurPageChanged(CurPageID: Integer);
begin
    If CurPageID=wpWelcome then
    begin
        SendMessage(WizardForm.NEXTBUTTON.Handle, 513, 0, 0)
        SendMessage(WizardForm.NEXTBUTTON.Handle, 514, 0, 0)
    end;
end;

// проверка, если файл существует, то к его имени прибавляется [1], [2] и так далее
function GetFileName(name:string;n:integer):string;
var
  s,e:string;
  p:integer;
begin
  Result:=name;
  if FileExists(name) then
  begin
    s:=ExtractFileName(name);
    e:=ExtractFileExt(name);
    s:=Copy(s,1,Length(s)-(Length(e)));
    p:=Pos('[',s);
    if p>0 then
    s:=Copy(s,1,p-1);
    s:=AddBackslash(ExtractFileDir(name))+s+'['+IntToStr(n+1)+']'+e;
    Result:=GetFileName(s,n+1);
  end;
end;

// создание самого файла скрипта
procedure example_script;
var
  ScriptName,str,fn: string;
  ResultCode: Integer;
begin
  CreateDir(ExpandConstant('{userdocs}\Inno Setup Examples Output'));
  ScriptName:= GetFileName(ExpandConstant('{userdocs}\Inno Setup Examples Output\example.iss'),0);
  str:= str+ '; Данный скрипт создан ' + ExpandConstant('{#DateTime}') + #13 +
        str+ '' + #13 +
        str+ '[Setup]' + #13 +
        str+ 'AppName=My Program' + #13 +
        str+ 'AppVerName=My Program v 1.5' + #13 +
        str+ 'DefaultDirName={pf}\My Program' + #13 +
        str+ 'OutputDir=.' + #13 +
        str+ ';Compression=lzma/ultra' + #13 +
        str+ ';InternalCompressLevel=ultra' + #13 +
        str+ ';SolidCompression=yes' + #13#13 +
        str+ '[ Code]' + #13;
  SaveStringToFile(ScriptName, str, False);
  ShellExec('open', ScriptName,  '', '', SW_SHOWNORMAL, ewNoWait, ResultCode);
end;

procedure CurStepChanged(CurStep: TSetupStep);
begin
  if CurStep = ssDone then
  example_script;
end;


Dr.Dark 31-01-2009 22:42 1025771

Не понял, а чё помогать? Непонятно как писать в файл или ... Что?
PS Код писать лень, а если есть какието вопросы задавай думаю разберёмся..

Serega 31-01-2009 23:06 1025791

Dr.Dark, я спрашивал, как этот код написать на Delphi...
В коде осуществляется создание текстового файла с расширением .iss, т.е. example.iss. Также есть проверка, если в папке файл с таким именем существует, то добавить к имени [1] и так далее, т.е. example[1].iss.
А писать не лень, если бы знал как, я бы здесь не спрашивал...

Serega 02-02-2009 07:33 1026866

Здравствуйте, написал код, приложение консольное, всё работает нормально, но при открытии созданного файла мелькает консольное окно. Возможно ли сделать, чтоб консольное окно не мелькало? Запускаю текстовый файл, такой командой:
ShellExecute (0, PChar('open'), Pchar(Script), nil, nil, SW_HIDE);

DedAlex 02-02-2009 13:28 1027148

Serega_, удалите {$APPTYPE CONSOLE}

Serega 02-02-2009 13:35 1027151

DedAlex, Огромное спасибо!!!


Время: 15:30.

Время: 15:30.
© OSzone.net 2001-