PDA

Показать полную графическую версию : Помощь в написании примера


Serega
31-01-2009, 14:33
Здравствуйте, заранее извиняюсь за возможно глупую просьбу...
Только начал изучать 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
Не понял, а чё помогать? Непонятно как писать в файл или ... Что?
PS Код писать лень, а если есть какието вопросы задавай думаю разберёмся..

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

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

DedAlex
02-02-2009, 13:28
Serega_, удалите {$APPTYPE CONSOLE}

Serega
02-02-2009, 13:35
DedAlex, Огромное спасибо!!!




© OSzone.net 2001-2012