Ru-Board.club
← Вернуться в раздел «Программы»

» Inno Setup (создание инсталяционных пакетов)

Автор: Raf_SE
Дата сообщения: 22.02.2008 21:42
iTASmania_Inc
А ты не мог бы подстроить мой скрипт таким образом? Просто я не шарю в Паскалях (совсем). Плиз... если те не трудно...

[more]

Код:
[Setup]
LanguageDetectionMethod=uilanguage
ShowLanguageDialog=auto
BackColor=clBlack
BackColor2=clBlack

[Languages]
Name: "ru"; MessagesFile: "compiler:Languages\Russian.isl"
Name: "en"; MessagesFile: "compiler:Default.isl"


[Components]
Name: "Sound"; Description: "Озвучка"; Types: full compact custom; Flags: fixed
Name: "Sound\Czech"; Description: "Чешская"; Flags: exclusive
Name: "Sound\Englisch"; Description: "Английская"; Flags: exclusive
Name: "Sound\Russian"; Description: "Русская"; Flags: exclusive
Name: "Sound\German"; Description: "Немецкая"; Flags: exclusive
Name: "Sound\French"; Description: "Французская"; Flags: exclusive

Name: "Text"; Description: "Текст"; Types: full compact custom; Flags: fixed
Name: "Text\Czech"; Description: "Чешский"; Flags: exclusive
Name: "Text\Englisch"; Description: "Английский"; Flags: exclusive
Name: "Text\Russian"; Description: "Русский"; Flags: exclusive
Name: "Text\Russian\1c"; Description: "от 1с"; Flags: exclusive
Name: "Text\Russian\Triada"; Description: "от Triada"; Flags: exclusive
Name: "Text\Deutsch"; Description: "Немецкий"; Flags: exclusive
Name: "Text\French"; Description: "Французский"; Flags: exclusive
Name: "Text\Polish"; Description: "Польский"; Flags: exclusive
Name: "Text\Swedish"; Description: "Шведский"; Flags: exclusive


[Code]
type TProc = procedure(HandleW, msg, idEvent, TimeSys: LongWord);

var Form : TSetupForm;
BackImage, SlideImage: TBitmapImage;
TimerID: LongWord;
S : String;
Width, Height:Integer;


function WrapTimerProc(callback:TProc; paramcount:integer):longword;
external 'wrapcallback@files:innocallback.dll stdcall';

function SetTimer(hWnd: LongWord; nIDEvent, uElapse: LongWord; lpTimerFunc: LongWord): LongWord;
external 'SetTimer@user32.dll stdcall';

function KillTimer(hWnd: LongWord; nIDEvent: LongWord): LongWord;
external 'KillTimer@user32.dll stdcall';

function GetSystemMetrics(nIndex:Integer):Integer;
external 'GetSystemMetrics@user32.dll stdcall';


function PercentProgress(): Integer;
begin
with WizardForm.ProgressGauge do
begin
Result:=(Position-Min)/((Max - Min)/100)
end
end;


procedure OnTimer(HandleW, msg, idEvent, TimeSys: LongWord);


var Percent: Integer;

begin
Percent:= PercentProgress;
with SlideImage do
begin
if ((percent>0) and (percent<10) and (Tag<>1)) then begin
Bitmap.LoadFromFile(ExpandConstant('{tmp}') + '\bilboard0.bmp')
Tag:=1
end
else
if ((percent>11) and (percent<22) and (Tag<>2)) then
begin
Bitmap.LoadFromFile(ExpandConstant('{tmp}') + '\bilboard1.bmp')
Tag:=2
end
else
if ((percent>23) and (percent<33) and (Tag<>3)) then
begin
Bitmap.LoadFromFile(ExpandConstant('{tmp}') + '\bilboard2.bmp')
Tag:=3
end
else
if ((percent>34) and (percent<44) and (Tag<>4)) then
begin
Bitmap.LoadFromFile(ExpandConstant('{tmp}') + '\bilboard3.bmp')
Tag:=4
end
else
if ((percent>45) and (percent<55) and (Tag<>5)) then
begin
Bitmap.LoadFromFile(ExpandConstant('{tmp}') + '\bilboard4.bmp')
Tag:=5
end
else
if ((percent>56) and (percent<66) and (Tag<>6)) then
begin
Bitmap.LoadFromFile(ExpandConstant('{tmp}') + '\bilboard5.bmp')
Tag:=6
end
else
if ((percent>67) and (percent<77) and (Tag<>7)) then
begin
Bitmap.LoadFromFile(ExpandConstant('{tmp}') + '\bilboard6.bmp')
Tag:=7
end
else
if ((percent>78) and (percent<88) and (Tag<>8)) then
begin
Bitmap.LoadFromFile(ExpandConstant('{tmp}') + '\bilboard7.bmp')
Tag:=8
end
else
if ((percent>89) and (percent<100) and (Tag<>9)) then
begin
Bitmap.LoadFromFile(ExpandConstant('{tmp}') + '\bilboard8.bmp')
Tag:=9
end
end
end;


procedure InitializeWizard();
begin
WizardForm.Position:= poScreenCenter;
Width:= GetSystemMetrics(0);
Height:= GetSystemMetrics(1);
MainForm.BorderStyle:= bsNone;
MainForm.Left:= 0;
MainForm.Top:= 0;
MainForm.Width:= Width;
MainForm.Height:= Height;

ExtractTemporaryFile('BackImage.bmp');
S:= (ExpandConstant('{tmp}')+'\BackImage.bmp');

BackImage:=TBitmapImage.Create(MainForm);
BackImage.Bitmap.LoadFromFile(S);
BackImage.Align:= alClient;
BackImage.Parent:= MainForm;
BackImage.Stretch:= True;
MainForm.Visible:= True;

ExtractTemporaryFile('BackImage.bmp');
ExtractTemporaryFile('bilboard0.bmp');
ExtractTemporaryFile('bilboard1.bmp');
ExtractTemporaryFile('bilboard2.bmp');
ExtractTemporaryFile('bilboard3.bmp');
ExtractTemporaryFile('bilboard4.bmp');
ExtractTemporaryFile('bilboard5.bmp');
ExtractTemporaryFile('bilboard6.bmp');
ExtractTemporaryFile('bilboard7.bmp');
ExtractTemporaryFile('bilboard8.bmp');
end;


procedure CurPageChanged(CurPageID: Integer);
var Pfunc : LongWord;
begin
If CurPageID = wpInstalling then
begin
Form := CreateCustomForm();

Form.ClientWidth := ScaleX(800);
Form.ClientHeight := ScaleY(600);
Form.Width:= 800;
Form.Height:= 600;
Form.BorderStyle := bsNone;
Form.Color:=clBlack;
Form.Parent:=MainForm;
Form.Position:=poScreenCenter;

Form.Show();

pfunc:=WrapTimerProc(@OnTimer, 4)
TimerID:=SetTimer(0, 0, 500, pfunc)

S:= (ExpandConstant('{tmp}') + '\bilboard0.bmp');

SlideImage:= TBitmapImage.Create(Form);
with SlideImage do
begin
Align:= alClient;
Stretch:= True;
Bitmap.LoadFromFile(S);
Parent:= Form;
Tag:= 1;
end

with WizardForm do
begin
MainPanel.Hide;
Bevel1.Hide;
Width:= ScaleX(395);
Height:= ScaleY(142);
Left:= ScaleX(0);
Top:= ScaleY(0);
Left:= ScaleX(MainForm.Left+20);
Top:= ScaleY(MainForm.Height-170);
InnerNotebook.Left:= ScaleX(10);
InnerNotebook.Top:= ScaleY(10);
InnerNotebook.Width:= ScaleX(370);
StatusLabel.Left:= ScaleX(0);
StatusLabel.Top:= ScaleY(0);
StatusLabel.Width:= WizardForm.InnerNotebook.Width;
FileNameLabel.Left:= ScaleX(0);
FileNameLabel.Top:= ScaleY(20);
FileNameLabel.Width:=WizardForm.InnerNotebook.Width;
ProgressGauge.Top:= ScaleY(40);
ProgressGauge.Width:= WizardForm.InnerNotebook.Width;
CancelButton.BringToFront;
CancelButton.Left:= ScaleX(154);
CancelButton.Top:= ScaleY(80);
end
end

begin
if CurPageID = wpFinished then
begin
Form.Free;
KillTimer(0, TimerID);
WizardForm.Width:=502;
WizardForm.Height:=392;
WizardForm.Position:=poScreenCenter;
end
end
end;


procedure DeinitializeSetup();
begin
KillTimer(0, TimerID);
end;


procedure CurUninstallStepChanged(CurUninstallStep: TUninstallStep);
var Res: Integer;
begin
case CurUninstallStep of usPostUninstall:
begin
If DirExists(ExpandConstant('{app}')+'') then
case MsgBox('Папка "'+ExpandConstant('{app}')+'" не пуста.'#13#13 +
'"Да" – полное удаление всех файлов в папке, включая саму папку.' #13#13 +
'"Нет" – открыть папку в проводнике, чтобы вручную удалить файлы.'#13#13 +
'"Отмена" – ничего не делать, удалить папку позже самостоятельно.', mbInformation, MB_YESNOCANCEL)
of IDYES:
begin
if not DelTree(ExpandConstant('{app}')+'', True, True, True) then
MsgBox('Папка не удалена.' #13#13 'Папка или один из файлов в ней задействованы другим приложением.', mbError, MB_OK);
end

IDNO:
begin
if not ShellExec('open', ExpandConstant('{app}')+'', '', '', SW_SHOWMAXIMIZED, ewNoWait, Res) then
MsgBox('Ошибка открытия.' #13#13 'Папка не найдена.', mbError, MB_OK);
end

IDCANCEL:
begin
Form.Close;
end
end
end
end
end;


function NextButtonClick(CurPage: Integer): Boolean;
var s2:string;
begin
Result:=True;
If CurPage = wpSelectDir then
begin
s2:= (ExpandConstant('{app}') + '');
If DirExists(s2) then
begin
s:= 'Установка в существующую папку в целях безопасности невозможна!';
MsgBox(s, mbError, mb_Ok);
Result:=False;
end
end
end;


procedure CurStepChanged(CurStep: TSetupStep);
begin
if CurStep = ssPostInstall then
begin
RegWriteBinaryValue(HKLM, 'Software\Illusion Softworks\Mafia', 'idir', ExpandConstant('{app}'));
end
end;
Автор: Chanka
Дата сообщения: 22.02.2008 22:38
serg_aka_lain
Можешь мне тоже дать код слайд-шоу. Пожалуйста
Автор: Raf_SE
Дата сообщения: 22.02.2008 23:07
Chanka
Я свой брал отсюда - http://upload.com.ua/get/900122236
Автор: serg_aka_lain
Дата сообщения: 22.02.2008 23:47
Chanka

Забирай в ЛС.
Автор: Victor_Dobrov
Дата сообщения: 23.02.2008 01:36
Corona Skin & Check System Requirements (400 Кб в архиве) - расширение инсталлятора Inno Setup.

Скрипт больше не привязан к русскому языку, локализация English и Russian подключается отдельно.
Текст прогнал через X-Translator, просьба к знающим английский: проверьте English-Corona.isl и сообщите об ошибках.
Автор: PolluxVonTXII
Дата сообщения: 23.02.2008 06:07
Up - поднимаю вопрос, ответа как ни странно не услышал ->

Господа, почему Inno Setup не приниает в [Registry] циферно-буквенные значения ValueData:, к примеру - 0000fa32, 0000000e, {95808DC4-FA4A-4c74-92FE-5B863F82066B}
Кто, что подскажет ?
Автор: Chanka
Дата сообщения: 23.02.2008 08:10
serg_aka_lain

Спасибо.
Автор: iTASmania_Inc
Дата сообщения: 23.02.2008 09:33
Raf_SE, примерно [more=так]
[Setup]
AppName=My Program
AppVerName=My Program [Version]
DefaultDirName={pf}\My Program
;LanguageDetectionMethod=uilanguage
;ShowLanguageDialog=auto
BackColor=clBlack
BackColor2=clBlack

[Languages]
Name: "ru"; MessagesFile: "compiler:Languages\Russian.isl"
Name: "en"; MessagesFile: "compiler:Default.isl"

[CustomMessages]
ru.InstallationIsNotEnabled = Установка в целях безопасности невозможна!
en.InstallationIsNotEnabled = Installation is not enabled!

[Components]
Name: "Sound"; Description: "Озвучка"; Types: full compact custom; Flags: fixed
Name: "Sound\Czech"; Description: "Чешская"; Flags: exclusive
Name: "Sound\Englisch"; Description: "Английская"; Flags: exclusive
Name: "Sound\Russian"; Description: "Русская"; Flags: exclusive
Name: "Sound\German"; Description: "Немецкая"; Flags: exclusive
Name: "Sound\French"; Description: "Французская"; Flags: exclusive

Name: "Text"; Description: "Текст"; Types: full compact custom; Flags: fixed
Name: "Text\Czech"; Description: "Чешский"; Flags: exclusive
Name: "Text\Englisch"; Description: "Английский"; Flags: exclusive
Name: "Text\Russian"; Description: "Русский"; Flags: exclusive
Name: "Text\Russian\1c"; Description: "от 1с"; Flags: exclusive
Name: "Text\Russian\Triada"; Description: "от Triada"; Flags: exclusive
Name: "Text\Deutsch"; Description: "Немецкий"; Flags: exclusive
Name: "Text\French"; Description: "Французский"; Flags: exclusive
Name: "Text\Polish"; Description: "Польский"; Flags: exclusive
Name: "Text\Swedish"; Description: "Шведский"; Flags: exclusive


[Code]

type TProc = procedure(HandleW, msg, idEvent, TimeSys: LongWord);

var Form : TSetupForm;
BackImage, SlideImage: TBitmapImage;
TimerID: LongWord;
S : String;
Width, Height:Integer;

function WrapTimerProc(callback:TProc; paramcount:integer):longword;
external 'wrapcallback@files:innocallback.dll stdcall';

function SetTimer(hWnd: LongWord; nIDEvent, uElapse: LongWord; lpTimerFunc: LongWord): LongWord;
external 'SetTimer@user32.dll stdcall';

function KillTimer(hWnd: LongWord; nIDEvent: LongWord): LongWord;
external 'KillTimer@user32.dll stdcall';

function GetSystemMetrics(nIndex:Integer):Integer;
external 'GetSystemMetrics@user32.dll stdcall';


function PercentProgress(): Integer;
begin
with WizardForm.ProgressGauge do
begin
Result:=(Position-Min)/((Max - Min)/100)
end
end;


procedure OnTimer(HandleW, msg, idEvent, TimeSys: LongWord);


var Percent: Integer;

begin
Percent:= PercentProgress;
with SlideImage do
begin
if ((percent>0) and (percent<10) and (Tag<>1)) then begin
Bitmap.LoadFromFile(ExpandConstant('{tmp}') + '\bilboard0.bmp')
Tag:=1
end
else
if ((percent>11) and (percent<22) and (Tag<>2)) then
begin
Bitmap.LoadFromFile(ExpandConstant('{tmp}') + '\bilboard1.bmp')
Tag:=2
end
else
if ((percent>23) and (percent<33) and (Tag<>3)) then
begin
Bitmap.LoadFromFile(ExpandConstant('{tmp}') + '\bilboard2.bmp')
Tag:=3
end
else
if ((percent>34) and (percent<44) and (Tag<>4)) then
begin
Bitmap.LoadFromFile(ExpandConstant('{tmp}') + '\bilboard3.bmp')
Tag:=4
end
else
if ((percent>45) and (percent<55) and (Tag<>5)) then
begin
Bitmap.LoadFromFile(ExpandConstant('{tmp}') + '\bilboard4.bmp')
Tag:=5
end
else
if ((percent>56) and (percent<66) and (Tag<>6)) then
begin
Bitmap.LoadFromFile(ExpandConstant('{tmp}') + '\bilboard5.bmp')
Tag:=6
end
else
if ((percent>67) and (percent<77) and (Tag<>7)) then
begin
Bitmap.LoadFromFile(ExpandConstant('{tmp}') + '\bilboard6.bmp')
Tag:=7
end
else
if ((percent>78) and (percent<88) and (Tag<>8)) then
begin
Bitmap.LoadFromFile(ExpandConstant('{tmp}') + '\bilboard7.bmp')
Tag:=8
end
else
if ((percent>89) and (percent<100) and (Tag<>9)) then
begin
Bitmap.LoadFromFile(ExpandConstant('{tmp}') + '\bilboard8.bmp')
Tag:=9
end
end
end;


procedure InitializeWizard();
begin
WizardForm.Position:= poScreenCenter;
Width:= GetSystemMetrics(0);
Height:= GetSystemMetrics(1);
MainForm.BorderStyle:= bsNone;
MainForm.Left:= 0;
MainForm.Top:= 0;
MainForm.Width:= Width;
MainForm.Height:= Height;

ExtractTemporaryFile('BackImage.bmp');
S:= (ExpandConstant('{tmp}')+'\BackImage.bmp');

BackImage:=TBitmapImage.Create(MainForm);
BackImage.Bitmap.LoadFromFile(S);
BackImage.Align:= alClient;
BackImage.Parent:= MainForm;
BackImage.Stretch:= True;
MainForm.Visible:= True;

ExtractTemporaryFile('BackImage.bmp');
ExtractTemporaryFile('bilboard0.bmp');
ExtractTemporaryFile('bilboard1.bmp');
ExtractTemporaryFile('bilboard2.bmp');
ExtractTemporaryFile('bilboard3.bmp');
ExtractTemporaryFile('bilboard4.bmp');
ExtractTemporaryFile('bilboard5.bmp');
ExtractTemporaryFile('bilboard6.bmp');
ExtractTemporaryFile('bilboard7.bmp');
ExtractTemporaryFile('bilboard8.bmp');
end;


procedure CurPageChanged(CurPageID: Integer);
var Pfunc : LongWord;
begin
If CurPageID = wpInstalling then
begin
Form := CreateCustomForm();

Form.ClientWidth := ScaleX(800);
Form.ClientHeight := ScaleY(600);
Form.Width:= 800;
Form.Height:= 600;
Form.BorderStyle := bsNone;
Form.Color:=clBlack;
Form.Parent:=MainForm;
Form.Position:=poScreenCenter;

Form.Show();

pfunc:=WrapTimerProc(@OnTimer, 4)
TimerID:=SetTimer(0, 0, 500, pfunc)

S:= (ExpandConstant('{tmp}') + '\bilboard0.bmp');

SlideImage:= TBitmapImage.Create(Form);
with SlideImage do
begin
Align:= alClient;
Stretch:= True;
Bitmap.LoadFromFile(S);
Parent:= Form;
Tag:= 1;
end

with WizardForm do
begin
MainPanel.Hide;
Bevel1.Hide;
Width:= ScaleX(395);
Height:= ScaleY(142);
Left:= ScaleX(0);
Top:= ScaleY(0);
Left:= ScaleX(MainForm.Left+20);
Top:= ScaleY(MainForm.Height-170);
InnerNotebook.Left:= ScaleX(10);
InnerNotebook.Top:= ScaleY(10);
InnerNotebook.Width:= ScaleX(370);
StatusLabel.Left:= ScaleX(0);
StatusLabel.Top:= ScaleY(0);
StatusLabel.Width:= WizardForm.InnerNotebook.Width;
FileNameLabel.Left:= ScaleX(0);
FileNameLabel.Top:= ScaleY(20);
FileNameLabel.Width:=WizardForm.InnerNotebook.Width;
ProgressGauge.Top:= ScaleY(40);
ProgressGauge.Width:= WizardForm.InnerNotebook.Width;
CancelButton.BringToFront;
CancelButton.Left:= ScaleX(154);
CancelButton.Top:= ScaleY(80);
end
end

begin
if CurPageID = wpFinished then
begin
Form.Free;
KillTimer(0, TimerID);
WizardForm.Width:=502;
WizardForm.Height:=392;
WizardForm.Position:=poScreenCenter;
end
end
end;

procedure DeinitializeSetup();
begin
KillTimer(0, TimerID);
end;

procedure CurUninstallStepChanged(CurUninstallStep: TUninstallStep);
var
Res: Integer;
begin
case CurUninstallStep of
usPostUninstall:
begin
if DirExists(ExpandConstant('{app}')) then
if ExpandConstant('{language}') = 'Russian' then
case MsgBox('Папка "' + ExpandConstant('{app}') + '" не пуста.'#13#13 +
'"Да" – полное удаление всех файлов в папке, включая саму папку.' #13#13 +
'"Нет" – открыть папку в проводнике, чтобы вручную удалить файлы.'#13#13 +
'"Отмена" – ничего не делать, удалить папку позже самостоятельно.', mbInformation, MB_YESNOCANCEL) of

IDYES:
if not DelTree(ExpandConstant('{app}'), True, True, True) then
MsgBox('Папка не удалена.' #13#13 'Папка или один из файлов в ней задействованы другим приложением.', mbError, MB_OK);

IDNO:
if not ShellExec('open', ExpandConstant('{app}'), '', '', SW_SHOWMAXIMIZED, ewNoWait, Res) then
MsgBox('Ошибка открытия.' #13#13 'Папка не найдена.', mbError, MB_OK);

IDCANCEL: Form.Close;
end
else
case MsgBox('The folder "' + ExpandConstant('{app}') + '" is not empty.'#13#13 +
'"Yes" – delete the directory and everything inside it.' #13#13 +
'"No" – open this folder in explorer to remove files manually.'#13#13 +
'"Cancel" – skip it! ', mbInformation, MB_YESNOCANCEL) of

IDYES:
if not DelTree(ExpandConstant('{app}'), True, True, True) then
MsgBox('The folder is not deleted.' #13#13 'The folder or one files inside it is used by another application.', mbError, MB_OK);

IDNO:
if not ShellExec('open', ExpandConstant('{app}'), '', '', SW_SHOWMAXIMIZED, ewNoWait, Res) then
MsgBox('Error.' #13#13 'The folder is not found.', mbError, MB_OK);

IDCANCEL: Form.Close;
end
end
end
end;

function NextButtonClick(CurPage: Integer): Boolean;
begin
Result := True;
if CurPage = wpSelectDir then
if DirExists( ExpandConstant('{app}') ) then
begin
MsgBox(ExpandConstant('{cm:InstallationIsNotEnabled}'), mbError, mb_Ok);
Result := False;
end
end;

procedure CurStepChanged(CurStep: TSetupStep);
begin
if CurStep = ssPostInstall then
begin
RegWriteBinaryValue(HKLM, 'Software\Illusion Softworks\Mafia', 'idir', ExpandConstant('{app}'));
end
end;
[/more]
Автор: Raf_SE
Дата сообщения: 23.02.2008 15:27
iTASmania_Inc
А ты бы не мог еще и для секции [Components] тоже самое сделать? Плиз...
Автор: iTASmania_Inc
Дата сообщения: 23.02.2008 16:02
[more=Подробнее]
[Setup]
AppName=My Program
AppVerName=My Program [Version]
DefaultDirName={pf}\My Program

[Languages]
Name: "ru"; MessagesFile: "compiler:Languages\Russian.isl"
Name: "en"; MessagesFile: "compiler:Default.isl"

[CustomMessages]
en.Sound = Sound
ru.Sound = Озвучка
en.Sound_Czech = Czech
ru.Sound_Czech = Чешская
en.Sound_English = English
ru.Sound_English = Английская
en.Sound_Russian = Russian
ru.Sound_Russian = Русская
en.Sound_German = German
ru.Sound_German = Немецкая
en.Sound_French = French
ru.Sound_French = Французская
en.Text = Text
ru.Text = Текст
en.Text_Czech = Czech
ru.Text_Czech = Чешский
en.Text_English = English
ru.Text_English = Английский
en.Text_Russian = Russian
ru.Text_Russian = Русский
en.Text_Russian_1C = from 1C
ru.Text_Russian_1C = от 1С
en.Text_Russian_Triada = from Triada
ru.Text_Russian_Triada = от Triada
en.Text_Deutsch = German
ru.Text_Deutsch = Немецкий
en.Text_French = French
ru.Text_French = Французский
en.Text_Polish = Polish
ru.Text_Polish = Польский
en.Text_Swedish = Swedish
ru.Text_Swedish = Шведский

[Components]
Name: "Sound"; Description: {cm:Sound}; Types: full compact custom; Flags: fixed
Name: "Sound\Czech"; Description: {cm:Sound_Czech}; Flags: exclusive
Name: "Sound\English"; Description: {cm:Sound_English}; Flags: exclusive
Name: "Sound\Russian"; Description: {cm:Sound_Russian}; Flags: exclusive
Name: "Sound\German"; Description: {cm:Sound_German}; Flags: exclusive
Name: "Sound\French"; Description: {cm:Sound_French}; Flags: exclusive

Name: "Text"; Description: {cm:Text}; Types: full compact custom; Flags: fixed
Name: "Text\Czech"; Description: {cm:Text_Czech}; Flags: exclusive
Name: "Text\English"; Description: {cm:Text_English}; Flags: exclusive
Name: "Text\Russian"; Description: {cm:Text_Russian}; Flags: exclusive
Name: "Text\Russian\1C"; Description: {cm:Text_Russian_1C}; Flags: exclusive
Name: "Text\Russian\Triada"; Description: {cm:Text_Russian_Triada}; Flags: exclusive
Name: "Text\Deutsch"; Description: {cm:Text_Deutsch}; Flags: exclusive
Name: "Text\French"; Description: {cm:Text_French}; Flags: exclusive
Name: "Text\Polish"; Description: {cm:Text_Polish}; Flags: exclusive
Name: "Text\Swedish"; Description: {cm:Text_Swedish}; Flags: exclusive
[/more]

P.S.: не понимаю, так сложно посмотреть предыдущие примеры и сделать по аналогии? Отмазы типа "не понимаю в Паскалях (совсем)" не катят. Потому что в данном случае все очень примитивно. Тупой копипаст.
Автор: Kutsenko
Дата сообщения: 23.02.2008 22:20
Уважаемый iTASmania_Inc у меня к вам просьба. На 41 странице передпоследний пост. Человек просил слайдшоу на странице установки и перемещение прогресбара вниз, а я просил чтобы слайд был по процентам и вы мне тогда помогли))). Но я не знаю как сделать следующее: я хочу чтобы во время уставновки инсталятор ставал немного болше по размерам, это у меня получилось и я смог растянуть и переместить прогресбар вниз и кнопку вниз, но незнаю как растянуть картинку, никак не получается. Помогите мне пожалуйста. Картинка должна быть разрешением 980:710, инсталятор естественно немного больше. Заранее огромное спасибо.
Автор: elapse
Дата сообщения: 24.02.2008 00:08
Kutsenko, [more=подробнее]
[Setup]
AppName=My Program
AppVerName=My Program 1.5
DefaultDirName={pf}\My Program

[Files]
Source: InnoCallback.dll; Flags: dontcopy;

[Code]
const
PLUS_WIDTH = 483;
PLUS_HEIGHT = 458;

type
TProc = procedure(HandleW, msg, idEvent, TimeSys: LongWord);

var
TimerID: LongWord;
iCurr: Integer;
SlideImage: TBitmapImage;

function WrapTimerProc(callback:TProc; paramcount:integer):longword;
external 'wrapcallback@files:InnoCallback.dll stdcall';

function SetTimer(hWnd: LongWord; nIDEvent, uElapse: LongWord; lpTimerFunc: LongWord): LongWord;
external 'SetTimer@user32.dll stdcall';

function KillTimer(hWnd: LongWord; nIDEvent: LongWord): LongWord;
external 'KillTimer@user32.dll stdcall';

function PercentProgress(): Integer;
begin
with WizardForm.ProgressGauge do
Result := (Position-Min) / ((Max - Min) / 100);
end;

procedure OnTimer(HandleW, msg, idEvent, TimeSys: LongWord);
begin
if (PercentProgress > 30) and (PercentProgress < 50) and (SlideImage.Tag <> 1) then
begin
SlideImage.Bitmap.LoadFromFile(ExpandConstant('{src}\Image_2.bmp'));
SlideImage.Tag := 1;
end
else
if (PercentProgress > 50) and (PercentProgress < 80) and (SlideImage.Tag <> 2) then
begin
SlideImage.Bitmap.LoadFromFile(ExpandConstant('{src}\Image_3.bmp'));
SlideImage.Tag := 2;
end;
end;

procedure InitializeWizard();
begin
WizardForm.StatusLabel.Hide;
WizardForm.FilenameLabel.Hide;
end;

procedure CurPageChanged(CurPageID: Integer);
var
pfunc: LongWord;
begin
if CurPageID = wpInstalling then
begin
pfunc := WrapTimerProc(@OnTimer, 4);
TimerID := SetTimer(0, 0, 100, pfunc);

WizardForm.Height := WizardForm.Height + ScaleY(PLUS_HEIGHT);
WizardForm.Width := WizardForm.Width + ScaleX(PLUS_WIDTH);

WizardForm.CancelButton.Top := WizardForm.CancelButton.Top + ScaleY(PLUS_HEIGHT);
WizardForm.CancelButton.Left := WizardForm.CancelButton.Left + ScaleX(PLUS_WIDTH);

WizardForm.InnerNoteBook.Hide;

WizardForm.OuterNotebook.Height := WizardForm.OuterNotebook.Height + ScaleY(PLUS_HEIGHT);
WizardForm.OuterNotebook.Width := WizardForm.OuterNotebook.Width + ScaleX(PLUS_WIDTH);

WizardForm.Bevel1.Width := WizardForm.Width;

WizardForm.Bevel.Top := WizardForm.Bevel.Top + ScaleY(PLUS_HEIGHT);
WizardForm.Bevel.Width := WizardForm.Width;

WizardForm.MainPanel.Width := WizardForm.Width;

WizardForm.WizardSmallBitmapImage.Left := WizardForm.WizardSmallBitmapImage.Left + ScaleX(PLUS_WIDTH);

WizardForm.Center;

SlideImage := TBitmapImage.Create(WizardForm);
SlideImage.Top := WizardForm.Bevel1.Top + WizardForm.Bevel1.Height;
SlideImage.Width := ScaleX(980);
SlideImage.Height := ScaleY(710);
SlideImage.Stretch := True;
SlideImage.Bitmap.LoadFromFile(ExpandConstant('{src}\Image_1.bmp'));
SlideImage.Parent := WizardForm.InnerPage;

WizardForm.ProgressGauge.Parent := WizardForm;
WizardForm.ProgressGauge.Top := WizardForm.CancelButton.Top;
WizardForm.ProgressGauge.Left := ScaleX(10);
WizardForm.ProgressGauge.Width := WizardForm.CancelButton.Left / 2;
end;

if (CurPageID > wpInstalling) and (CurPageID < wpFinished) then WizardForm.InnerNoteBook.Show;

if (CurPageID > wpInstalling) and (iCurr = 0) then
begin
WizardForm.Height := WizardForm.Height - ScaleY(PLUS_HEIGHT);
WizardForm.Width := WizardForm.Width - ScaleX(PLUS_WIDTH);

WizardForm.CancelButton.Top := WizardForm.CancelButton.Top - ScaleY(PLUS_HEIGHT);
WizardForm.CancelButton.Left := WizardForm.CancelButton.Left - ScaleX(PLUS_WIDTH);

WizardForm.OuterNotebook.Height := WizardForm.OuterNotebook.Height - ScaleY(PLUS_HEIGHT);
WizardForm.OuterNotebook.Width := WizardForm.OuterNotebook.Width - ScaleX(PLUS_WIDTH);

WizardForm.Bevel1.Width := WizardForm.Width;

WizardForm.Bevel.Top := WizardForm.Bevel.Top - ScaleY(PLUS_HEIGHT);
WizardForm.Bevel.Width := WizardForm.Width;

WizardForm.MainPanel.Width := WizardForm.Width;

WizardForm.WizardSmallBitmapImage.Left := WizardForm.WizardSmallBitmapImage.Left - ScaleX(PLUS_WIDTH);

WizardForm.Center;

SlideImage.Hide;
WizardForm.ProgressGauge.Hide;

iCurr := 1;

KillTimer(0, TimerID);
end;
end;

procedure DeinitializeSetup();
begin
KillTimer(0, TimerID);
end;
[/more]. Только неплохо было бы подумать, а нужна ли такая "размашистая" установка пользователю.
Автор: KurtWagner
Дата сообщения: 24.02.2008 06:06
Alex Zaguzin - ет был ответ!
Автор: magnetics
Дата сообщения: 24.02.2008 14:20
Требуется помощь.
Никогда раньше не сталкивался с инсталяторами, но тут приспичило.
Надо мне создать инсталятор, который устанавливает шрифты в системную папку Fonts.
Вопрос. Как обозначить в скрипте эту самую системную папку?
То есть при установке могут быть разные системные папки. И C:\Windows\Fonts
И C:\Win\Fonts да в принципе как угодно может быть у клиента названо быть.
Ну чтобы ему не руками путь установки выбирать, а автоматом устанавливалось.
Автор: Kutsenko
Дата сообщения: 24.02.2008 14:34
2 magnetics
Source: F:\abc.txt; DestDir: {fonts}
Автор: elapse
Дата сообщения: 24.02.2008 14:36
magnetics, используйте в DestDir константу {fonts}. Подробнее - в Helpe.

Добавлено:
Извиняюсь, опередили.
Автор: Kutsenko
Дата сообщения: 24.02.2008 21:14
Вопрос на счёт скрипта от руководства Kindly. Если я добавляю лицензионное соглашение и нажимаю "я согласен" то кнопка не обновляется, текст на кнопке как был серым так и остался, но на менюшку нажать могу. Помогите исправить ошибку скрипта.
Автор: elapse
Дата сообщения: 24.02.2008 23:16
Kutsenko, если я правильно понял, то решение очень примитивно, буквально в одну строку:
WizardForm.LicenseAcceptedRadio.OnClick := @LicenceAcceptedRadioOnClick;
Автор: Angel_Smerti
Дата сообщения: 25.02.2008 20:38
iTASmania_Inc - извиняюсь, что сразу не поблагодарил, меня долго не было.
БОЛЬШОЕ СПАСИБО!!!


Цитата:
Установлена, скажем, игра. Естественно ее путь инсталляции прописан в реестре. И я, скажем, сделал некоторое дополнение изменение для нее или хочу инсталлятор для NoCD, котрый бы заменял исполнительный файл, тобиш экзешник. Вот и хочу сделать инсталлятор который будет брать путь в реестре и инсталлировать дополнение или NoCD по тому адресу без всяких запросов: такая папка существует или такой файл существуе не заменть ли нам его.

Я делал так:
Код:
[Setup]
AppName=The Sims 2 Have Sex
DefaultDirName={reg:HKLM\SOFTWARE\Microsoft\Windows\CurrentVersion\Uninstall\The Sims 2_is1,Inno Setup: App Path|{sd}\EA Games\The Sims 2}
Автор: viktor9
Дата сообщения: 25.02.2008 21:29
Подскажите у меня чтото не получаеться поставить иконку из программы
Цитата:
SetupIconFile=D:\Program Files\Miranda\miranda32.exe

компилятор ругаеться на эту строку
Автор: Kutsenko
Дата сообщения: 25.02.2008 21:33
2 viktor9
Конечно он будет ругаться. Нужен формат файла ***.ico
Автор: GRom V
Дата сообщения: 26.02.2008 03:55
Подскажите ПЛИЗЗ! -1) Как во время "просьбы" инсталлятора о смене диска проиграть мелодию1.wav. А после того как вставлю следующий проиграть мелодию2.wav

2) Как во время "просьбы" инсталлятора о смене диска изменить текст (Вставте следующий диск) ИМЕННО В КОДЕ???
Автор: Wilmots
Дата сообщения: 26.02.2008 05:32
У кого нить есть скрипт для Download Master (может кто делал для себя) идентичный оригиналу?
Поделитесь плиз.
Автор: noiseless
Дата сообщения: 26.02.2008 10:15
2Cemkey
Вот я делал для игры Icewind Dale II установку No-CD
[more]
[Setup]
AppName={cm:MyAppName}
AppVerName={cm:MyAppVerName,1.0}
DefaultDirName={reg:HKLM\Software\Microsoft\Windows\CurrentVersion\App Paths\IWD2.exe,Path|}
VersionInfoDescription=Установка Icewind Date II: no cd
AdminPrivilegesRequired=yes
DirExistsWarning=no
DisableReadyMemo=yes
disabledirpage=yes
DisableStartupPrompt=yes
UninstallDisplayIcon={app}\ACCWIZ.DLL
InfoBeforeFile=read.astral.txt
AppVersion=1.0
AppPublisher=noiseless
LicenseFile=license.iwd2.txt
WizardImageFile=C:\Program Files\Inno Setup 5\Examples\Setup_iwd2_b.bmp
WizardSmallImageFile=C:\Program Files\Inno Setup 5\Examples\Setup_iwd2.bmp

[Languages]
Name: ru; MessagesFile: "compiler:Languages\Russian.isl"

[Messages]
ru.BeveledLabel=(c) 2006 noiseless

[CustomMessages]
ru.MyAppName=Icewind Date II: no CD
ru.MyAppVerName=Icewind Date II: no CD %1

;[Types]
;Name: "full"; Description: "Полная"
;Name: "custom"; Description: "Выборочная"; Flags: iscustom

;[Components]
;Name: "program1"; Description: "Отучение от CD"; Types: full custom; Flags: fixed
;Name: "program2"; Description: "Руссификация"; Types: full custom

[Files]
Source: "test\IWD2.exe"; DestDir: "{app}";
;Source: "test\Override\*.*"; DestDir: "{app}\Override";

[Code]
var
iPath: string;

function NextButtonClick(CurPageID: Integer): Boolean;
begin
if CurPageID = wpReady then
begin
if RegQueryStringValue(HKEY_LOCAL_MACHINE, 'Software\Microsoft\Windows\CurrentVersion\App Paths\IWD2.exe', 'Path', iPath) then
renamefile(iPath + '\IWD2.exe',iPath + '\IWD2.exe.bak');
end;
Result := True;
end;

procedure CurUninstallStepChanged(CurUninstallStep: TUninstallStep);
begin
if CurUninstallStep = usDone then
begin
RegQueryStringValue(HKEY_LOCAL_MACHINE, 'Software\Microsoft\Windows\CurrentVersion\App Paths\IWD2.exe', 'Path', iPath);
filecopy(iPath + '\IWD2.exe.bak',iPath + '\IWD2.exe',false);
deletefile(iPath + '\IWD2.exe.bak');
end;
end;

function InitializeSetup(): Boolean;
begin
if RegQueryStringValue(HKEY_LOCAL_MACHINE, 'Software\Microsoft\Windows\CurrentVersion\App Paths\IWD2.exe', 'Path', iPath) then
begin
if fileexists(iPath+'\IWD2.exe.bak') then
begin
MsgBox('Отучение игры от CD уже произошло!', mbcriticalError, MB_OK);
result:=false;
end
else
result:=true;
end
else
MsgBox('Игра ''Icewind Dale II'' не установлена!' #13 'Установите игру!', mbcriticalError, MB_OK);
end;
[/more]
Автор: omals
Дата сообщения: 26.02.2008 11:32
имеется
Source: "..\app\MyDLL.dll"; DestDir: "{sys}"; Flags: ignoreversion overwritereadonly restartreplace; Attribs: hidden system readonly;
она локнута системой
запускаю еще раз инсталятор
появляєтся окно что нужно рестартнуть комп
как избавится от этого окна и не рестартить?
Автор: Kutsenko
Дата сообщения: 26.02.2008 12:06
2 omals.
Если я не ошибаюсь то убери флаг restartreplace
Автор: omals
Дата сообщения: 26.02.2008 14:22
2 Kutsenko
без него ребута не потребует (тоже не всегда)
но этот флаг мне нужен
Автор: Sandy Ann
Дата сообщения: 26.02.2008 20:59
Подскажите, как в инсталляторе прописать запись подобного кода в ini-файл:

Код: CDDrive1=S:
CDDrive2=S:
CDDrive3=S:
HDDrive=S:
IDPath=\\Game\NANCY
CifTreePath=\\Game\NANCY\ciftree\
HDVideoPath=\\Game\NANCY\HDVideo\
CDVideoPath=\\Game\NANCY\CDVideo\
HDSoundPath=\\Game\NANCY\HDSound\
CDSoundPath=\\Game\NANCY\CDSound\
LoadSavePath=\\Game\NANCY\Save\
Автор: serg_aka_lain
Дата сообщения: 26.02.2008 22:04
Sandy Ann

если ".ini" без секций то так

procedure CurStepChanged(CurStep: TSetupStep);
begin
If CurStep= ssPostInstall then
begin
SaveStringToFile(ExpandConstant('{app}') + '\file.ini', 'CDDrive1=S:' + #13#10, true);
SaveStringToFile(ExpandConstant('{app}') + '\file.ini', 'CDDrive2=S:' + #13#10, true);
SaveStringToFile(ExpandConstant('{app}') + '\file.ini', 'CDDrive3=S:' + #13#10, true);
SaveStringToFile(ExpandConstant('{app}') + '\file.ini', 'HDDrive=S:' + #13#10, true);
SaveStringToFile(ExpandConstant('{app}') + '\file.ini', 'IDPath=' + ExpandConstant('{app}') + #13#10, true);
SaveStringToFile(ExpandConstant('{app}') + '\file.ini', 'CifTreePath=' + ExpandConstant('{app}') + '\ciftree\' + #13#10, true);
SaveStringToFile(ExpandConstant('{app}') + '\file.ini', 'HDVideoPath=' + ExpandConstant('{app}') + '\HDVideo\' + #13#10, true);
SaveStringToFile(ExpandConstant('{app}') + '\file.ini', 'CDVideoPath=' + ExpandConstant('{app}') + '\CDVideo\' + #13#10, true);
SaveStringToFile(ExpandConstant('{app}') + '\file.ini', 'HDSoundPath=' + ExpandConstant('{app}') + '\HDSound\' + #13#10, true);
SaveStringToFile(ExpandConstant('{app}') + '\file.ini', 'CDSoundPath=' + ExpandConstant('{app}') + '\CDSound\' + #13#10, true);
SaveStringToFile(ExpandConstant('{app}') + '\file.ini', 'LoadSavePath=' + ExpandConstant('{app}') + '\Save\' + #13#10, true);
end
end;
Автор: Sandy Ann
Дата сообщения: 26.02.2008 22:53
serg_aka_lain
Спасибо.
Код в секции [Nancy Data]. Полный вид [more=INI][Nancy Data]
CDDrive1=S:
CDDrive2=S:
CDDrive3=S:
HDDrive=S:

IDPath=\\Temp Game\NANCY\Нэнси Дрю. Заколдованная карусель
CifTreePath=\\Temp Game\NANCY\Нэнси Дрю. Заколдованная карусель\ciftree\
HDVideoPath=\\Temp Game\NANCY\Нэнси Дрю. Заколдованная карусель\HDVideo\
CDVideoPath=\\Temp Game\NANCY\Нэнси Дрю. Заколдованная карусель\CDVideo\
HDSoundPath=\\Temp Game\NANCY\Нэнси Дрю. Заколдованная карусель\HDSound\
CDSoundPath=\\Temp Game\NANCY\Нэнси Дрю. Заколдованная карусель\CDSound\
LoadSavePath=\\Temp Game\NANCY\Нэнси Дрю. Заколдованная карусель\Save\

RunEntirelyFromCDDrive=0                ; 1=run all app from cdrom, 0=run normal
CifTreeAndFilesOnCD=0                    ; 1=all cif/tree files on CDROM, 0=tree on hard drive
TestingModeEnabled=0                    ; 1=enable test-only mode, 0=not enabled
ExternalCifFileChecking=1                ; 1=look for cif files external to tree, 0=don't look
DebugOutput=1                            ; 1=enable debug output (huge), 0=not enabled
RunInWindowedMode=0                        ; 1=run in a window, 0=run full-screen exclusive mode

; Drivers, Devices, and 3D
; Enumeration Status Settings:
;    0=DRIVER_ENUMERATION_ALWAYS_AND_SAVE
;    1=DRIVER_ENUMERATION_ONETIME_AND_SAVE
;    2=DRIVER_ENUMERATION_USEEXISTING
;    3=DRIVER_ENUMERATION_CHANGE_DRIVER
DirectXDriverEnumerationStatus=0

; 640x480 aspect=1.33 : 1
MaxXAxisTravelPerMove=195                ; max x travel per render loop
MaxYAxisTravelPerMove=150                ; max y travel per render loop

ClosedCaptioning=1
AutoMove=1

VoiceMasterVolume=75
MusicMasterVolume=84
SpecialEffectsMasterVolume=21

SystemQualityForConversation=0
InstallationType=0
PlayerWonTheGame=StillWorkingOnIt
;PlayerWonTheGame=AcedTheGame
[SystemInfo]
SystemName=TREX2000
OEMId=0x0
MinCodeAddress=0x10000
MaxCodeAddress=0x7FFEFFFF
PageSize=0x1000
AllocationGranularity=0x10000
ProcessorType=Pentium
CDTransferSpeed(bytes/sec)=1454545.50[/more]
Все содержимое файла надо вбивать в код или вашим кодом реально добить нужные параметры в нужную секцию? И как в ваш код в секцию дописать? Извеняюсь что про нее сразу не сообразил
PS: Не совсем понял эту строчку:
SaveStringToFile(ExpandConstant('{app}') + '\file.ini', 'CDDrive1=S:' + #13#10, true);
Какая буква диска пропишется в параметр CDDrive ? Из переменной {app}?

Страницы: 12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667

Предыдущая тема: Поиск в WinDjView


Форум Ru-Board.club — поднят 15-09-2016 числа. Цель - сохранить наследие старого Ru-Board, истории становления российского интернета. Сделано для людей.