Написание скрипта для инсталлятора

  • Автор темы Kindly
  • Дата начала
Статус
Закрыто для дальнейших ответов.
H

Hattrick

У меня еще вопрос: почему-то размер файла-инсталятора больше, чем архив на 200 Кб. С чем это может быть связяно? Может это дело связано с рисунками? :)
 
D

DCoder

Как сделать, чтобы после установки программы, она не добавлялась в список "Установка и удаление"?
 
K

Kmike

в секции [Setup] добавь строчку CreateUninstallRegKey=no


мне вот что интересно. на 5й странице сообщение №147 товарищ zubr дает пример кода, касательно фонового рисунка


[Setup]
WindowVisible=no

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

procedure InitializeWizard();
var
BackgroundBitmapImage: TBitmapImage;
s:string;
width, height:Integer;
begin
MainForm.BORDERSTYLE:=bsNone;
width:=GetSystemMetrics(61);
height:=GetSystemMetrics(62);
MainForm.Width:=width;
MainForm.Height:=height;
width:=MainForm.ClientWidth;
height:=MainForm.ClientHeight;
ExtractTemporaryFile('mostkorol2_1024.bmp');
s:=ExpandConstant('{tmp}')+'\mostkorol2_1024.bmp';
BackgroundBitmapImage := TBitmapImage.Create(MainForm);
BackgroundBitmapImage.Bitmap.LoadFromFile(s);
BackgroundBitmapImage.Left := 0;
BackgroundBitmapImage.Top := 0;
BackgroundBitmapImage.Width:=width;
BackgroundBitmapImage.Height:=height;
BackgroundBitmapImage.Parent := MainForm;
BackgroundBitmapImage.Stretch:=True;
MainForm.Visible:=True;
end;


у меня такая проблема: после страницы приветствия у мя идет страница с лицензионным соглашением, сам текст соглашения берется из текстового файла. так вот, из-за строчки MainForm.BORDERSTYLE:=bsNone; самого текста соглашения нет - пустое место. если убираю строчку, то текст появляется, но фоновый рисунок не на весь экран, а в окне. как бы это вылечить?
 
T

Ta-Snatch

Здравствуйте! Прочитал все 9 страниц, нашел вопрос и ответ на схожую проблему, но мне данное решение на подошло.

Код:
[Ini]
Filename: "{app}\wincmd.ini"; Components: plugins\wlx\wlx_ICLView; Section: "ListerPlugins"; Key: "1_detect"; String: ""MULTIMEDIA & ext="ICL" | ext="ICO" | force""

Пишу как приведено вышо, мне Инно выдает ошибку в Стринге, ставлю дополнительные кавычке в начале, компилирую, опять ошибка. Удаляю кавычке в начале и ставлю доп. в конце, результата "0". Добавляю в начале и в конце доп. кавычке - толку нет.

Вопрос: Как сделать так, что бы инно записал в *.ini файл строку со всеми кавычками (необходимо внести "MULTIMEDIA & ext="ICL" | ext="ICO" | force")?
 
T

Ta-Snatch

Спасибо, но уже разобрался благодаря ISTool :angry:

Тема классная, но почему-то ее забросили. Отдельное спасибо товарищу zubr'у!
 
T

TRT

Всем привет!
Народ нужна ваша помощь.Неподскажете как можно сделать слайд-шоу в фоновом изображении и при этом минимизировать страницу прогресса в какой нибудь угол экрана.
Как можно эти две вещи скрестить?
Заранее спасибо!
 
G

GRomV

Помогите пожалуйсто Люди!!!!!!

Как можно убрать с MainForm название программы???
Т.Е На фоновом окне (по умолчанию синим цветом) пишется название проги. Как убрать эту надпись:

[Setup]
AppName=My Program
AppVerName=My Program 1.5
AppPublisher=My Company, Inc.
AppPublisherURL=http://www.mycompany.com
AppSupportURL=http://www.mycompany.com
AppUpdatesURL=http://www.mycompany.com
DefaultDirName={pf}\My Program
DefaultGroupName=My Program
OutputBaseFilename=setup
Compression=lzma
SolidCompression=yes
WindowVisible=true

НУЖНО убрать Это гр*цензура*ное My Program с фонового окна!!!


Заранее благодарен!
 
T

TRT

Программеры ПЛИЗ!!! помогите с кодом на то, чтобы сделать маленькую страницу с прогресс-баром в правом нижнем углу экрана типа "Подготовка к установке" как в InstallShield которая появляется перед страницой приветствия на 5-7 секунд
 
F

Frostt

Перезалейти куди-нибудь пожалуйста руководство по программированию в Inno
ссылка у
уже не действует к сожалению!
 
T

TRT

<!--QuoteBegin-Frostt+19:01:2007, 03:04 -->
<span class="vbquote">(Frostt @ 19:01:2007, 03:04 )</span><!--QuoteEBegin-->Перезалейти куди-нибудь пожалуйста руководство по программированию в Inno
ссылка [snapback]53646" rel="nofollow" target="_blank[/snapback]</div>[/quote]
 
S

sergio_ps

Здравствуйте. Помогите пожалуйста, я не очень разбираюсь в программировании. У меня такая проблема, нужно создать скрипт (Inno Setup 5) чтобы при запуске инсталлятора сразу находило путь к программе для которой я хочу поставить обновление, (например русификатор к игре) тесть чтобы сразу находило каталог где установлена игра (не используя реестр) в противном случае выдавало сообщение "Эта программа не установлена на вашем компьютере" или что-то подобное. Заранее спасибо
 
G

Guest

Здравствуйте. Помогите пожалуйста, я не очень разбираюсь в программировании. У меня такая проблема, нужно создать скрипт (Inno Setup 5) чтобы при запуске инсталлятора сразу находило путь к программе для которой я хочу поставить обновление, (например русификатор к игре) тесть чтобы сразу находило каталог где установлена игра (не используя реестр) в противном случае выдавало сообщение "Эта программа не установлена на вашем компьютере" или что-то подобное. Заранее спасибо
Да, вопрос у тебя хороший. Почитай вот , может найдешь чего хорошего... Отпишись с цитатой.
 
S

sergio_ps

Да, вопрос у тебя хороший. Почитай вот , может найдешь чего хорошего... Отпишись с цитатой.
Форум неплохой, только чем он мне может помочь? если на даный момент меня интересует написание скрипта
 
S

sergio_ps

Спасибо за помощь, вы мне очень помогли
 
N

Nightw0lf

TRT
Программеры ПЛИЗ!!! помогите с кодом на то, чтобы сделать маленькую страницу с прогресс-баром в правом нижнем углу экрана типа "Подготовка к установке" как в InstallShield которая появляется перед страницой приветствия на 5-7 секунд
Код:
[Setup]
AppName=My Program
AppVerName=My Program version 1.5
DefaultDirName={pf}\My Program
DisableProgramGroupPage=yes
WindowVisible=yes

[Files]
Source: WizModernSmallImage.bmp; Flags: dontcopy

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

procedure InitializeWizard();
var
Form: TSetupForm;
ProgressBar: TNewProgressBar;
CancelButton: TButton;
StaticText: TNewStaticText;
BitmapImage: TBitmapImage;
BitmapFileName: String;
i: Integer;
begin
Form := CreateCustomForm();
try
with Form do
begin
ClientWidth := ScaleX(380);
ClientHeight := ScaleY(120);
BorderStyle:= bsDialog;
Left:= GetSystemMetrics(16) - ClientWidth - ScaleX(12);
Top:= GetSystemMetrics(17) - ClientHeight - ScaleY(12);
Caption := 'Inno Setup Wizard' //Заголовок мини ProgressBar'a
end;

BitmapFileName := ExpandConstant('{tmp}\WizModernSmallImage.bmp');
ExtractTemporaryFile(ExtractFileName(BitmapFileName));
BitmapImage := TBitmapImage.Create(Form);
BitmapImage.Left := ScaleX(8);
BitmapImage.Top := ScaleY(8);
BitmapImage.AutoSize := True;
BitmapImage.Bitmap.LoadFromFile(BitmapFileName);
BitmapImage.Parent := Form;

StaticText := TNewStaticText.Create(Form);
StaticText.Top := BitmapImage.Top;
StaticText.Left := BitmapImage.Left + BitmapImage.Width + ScaleX(8)
StaticText.Caption := 'Inno Setup is a free installer for Windows programs.' +
+ #10#13 + 'Support for all versions of Windows in use today';
StaticText.AutoSize := True;
StaticText.Parent := Form;

CancelButton := TButton.Create(Form);
CancelButton.Parent := Form;
CancelButton.Width := ScaleX(75);
CancelButton.Height := ScaleY(23);
CancelButton.Left := Form.ClientWidth - ScaleX(75 + 10);
CancelButton.Top := Form.ClientHeight - ScaleY(23 + 10);
CancelButton.Caption := 'Cancel';
CancelButton.ModalResult := mrCancel;
CancelButton.Cancel := True;

ProgressBar := TNewProgressBar.Create(Form);
with ProgressBar do
begin
Height := CancelButton.Height - ScaleY(8);
Width := Form.Width - ScaleX(128);
Top := CancelButton.Top;
Left := BitmapImage.Left;
Parent := Form;
Min:= 0;
Max:= 30;
Position := 0;
end;

Form.ActiveControl := CancelButton;
Form.Show();

for i:= 0 to 30 do
begin
ProgressBar.Position:= i;
Form.Repaint;
Sleep(500);
i:= i + 1;
end;
finally
Form.Free();
end;
end;
 
V

VladimirV

Народ, помогите решить следующий вопрос.
Нужно чтобы во время инстала (когда нажимаешь кнопку Install и начинает бежать прогресс баг) вставить свой обработчик, а конкретнее, кроме копирования файлов нужно ещё выполнять скрипты на базе.
ОЧЕНЬ НУЖНО!!!
Заранее спасибо.
 
D

diablo

помогите пожалуйста как прописать кнопку отмены.
begin
WizardForm.CancelButton.BringToFront;
end.








[Setup]
AppName=My Program
AppVerName=My Program 1.5
AppPublisher=My Company, Inc.
AppPublisherURL=http://www.example.com/
AppSupportURL=http://www.example.com/
AppUpdatesURL=http://www.example.com/
DefaultDirName={pf}\My Program
DefaultGroupName=My Program
OutputBaseFilename=setup
Compression=lzma
SolidCompression=yes
WindowVisible=no
[Languages]
Name: "russian"; MessagesFile: "compiler:Languages\Russian.isl"

[Tasks]
Name: "desktopicon"; Description: "{cm:CreateDesktopIcon}"; GroupDescription: "{cm:AdditionalIcons}"; Flags: unchecked

[Files]
Source: "E:\Program Files\Inno Setup 5\Examples\MyProg.exe"; DestDir: "{app}"; Flags: ignoreversion
; NOTE: Don't use "Flags: ignoreversion" on any shared system files

[Icons]
Name: "{group}\My Program"; Filename: "{app}\MyProg.exe"
Name: "{group}\{cm:UninstallProgram,My Program}"; Filename: "{uninstallexe}"
Name: "{commondesktop}\My Program"; Filename: "{app}\MyProg.exe"; Tasks: desktopicon

[Run]
Filename: "{app}\MyProg.exe"; Description: "{cm:LaunchProgram,My Program}"; Flags: nowait postinstall skipifsilent

[Files]

Source: "castle.bmp"; DestDir: "{tmp}"; Flags: dontcopy nocompression
Source: "BASS.dll"; DestDir: "{tmp}"; Flags: dontcopy nocompression
Source: "06-static_x_-_the_only-ost-2003-djn.mp3"; DestDir: "{tmp}"; Flags: dontcopy nocompression
Код:
const
BASS_SAMPLE_LOOP = 4;

type
HSTREAM = DWORD;

function BASS_Init(device: Integer; freq, flags: DWORD; win: hwnd; CLSID: Integer): Boolean;
external 'BASS_Init@files:BASS.dll stdcall delayload';

function BASS_StreamCreateFile(mem: BOOL; f: PChar; offset: DWORD; length: DWORD; flags: DWORD): HSTREAM;
external 'BASS_StreamCreateFile@files:BASS.dll stdcall delayload';

function BASS_Start(): Boolean;
external 'BASS_Start@files:BASS.dll stdcall delayload';

function BASS_ChannelPlay(handle: DWORD; restart: BOOL): Boolean;
external 'BASS_ChannelPlay@files:BASS.dll stdcall delayload';

function BASS_Stop(): Boolean;
external 'BASS_Stop@files:BASS.dll stdcall delayload';

function BASS_Free(): Boolean;
external 'BASS_Free@files:BASS.dll stdcall delayload';


function GetSystemMetrics(nIndex: Integer): Integer;
external 'GetSystemMetrics@user32.dll stdcall';
procedure InitializeWizard();
var
BackgroundBitmapImage: TBitmapImage;
s: string;
Name1: string;
i: Integer;
width, height: Integer;
begin
ExtractTemporaryFile('castle.bmp');
s := ExpandConstant('{tmp}') + '\castle.bmp';
WizardForm.Position := poScreenCenter;
MainForm.BORDERSTYLE := bsNone;
width := GetSystemMetrics(0);
height := GetSystemMetrics(1);
MainForm.Width := width;
MainForm.Height := height;
width := MainForm.ClientWidth;
height := MainForm.ClientHeight;
MainForm.Left := 0;
MainForm.Top := 0;
BackgroundBitmapImage := TBitmapImage.Create(MainForm);
BackgroundBitmapImage.Bitmap.LoadFromFile(s);
BackgroundBitmapImage.Align := alClient;
BackgroundBitmapImage.Parent := MainForm;
BackgroundBitmapImage.Stretch := True;
MainForm.Visible := True;
begin
ExtractTemporaryFile('BASS.dll');
ExtractTemporaryFile('06-static_x_-_the_only-ost-2003-djn.mp3');
if BASS_Init(-1, 44100, 0, 0, 0) then
begin
BASS_Start();
Name1 := ExpandConstant('{tmp}\06-static_x_-_the_only-ost-2003-djn.mp3');
i := BASS_StreamCreateFile(FALSE, PChar(Name1), 0, 0, 4);
if i <> 0 then
begin
BASS_ChannelPlay(i, True);
end;
end;
end;
end;
procedure CurPageChanged(CurPageID: Integer);
begin
if CurPageID=wpInstalling
then
begin
WizardForm.MainPanel.Visible:=False;
WizardForm.Bevel1.Visible:=False;
WizardForm.Width:=ScaleX(395);
WizardForm.Height:=ScaleY(142);
WizardForm.Left:=ScaleX(MainForm.Width-420);
WizardForm.Top:=ScaleY(MainForm.Height-170);
WizardForm.InnerNotebook.Left:=ScaleX(10);
WizardForm.InnerNotebook.Top:=ScaleY(10);
WizardForm.InnerNotebook.Width:=ScaleX(370);
WizardForm.StatusLabel.Left:=ScaleX(0);
WizardForm.StatusLabel.Top:=ScaleY(0);
WizardForm.StatusLabel.Width:=WizardForm.InnerNotebook.Width;
WizardForm.FileNameLabel.Left:=ScaleX(0);
WizardForm.FileNameLabel.Top:=ScaleY(20);
WizardForm.FileNameLabel.Width:=WizardForm.InnerNotebook.Width;
WizardForm.ProgressGauge.Top:=ScaleY(40);
WizardForm.ProgressGauge.Width:=WizardForm.InnerNotebook.Width;
WizardForm.CancelButton.Left:=ScaleX(154);
WizardForm.CancelButton.Top:=ScaleY(80);
end
if CurPageID=wpFinished
then
begin
WizardForm.Width:=502;{?????? ???? ?? ???????????}
WizardForm.Height:=392;{?????? ???? ?? ?????????}
WizardForm.Position:=poScreenCenter; {??????? ? ???????? ?????????}
end
end;

begin
WizardForm.CancelButton.BringToFront;
end.
 
T

TRT

Для: diablo

[Setup]
AppName=My Program
AppVerName=My Program 1.5
AppPublisher=My Company, Inc.
AppPublisherURL=http://www.example.com/
AppSupportURL=http://www.example.com/
AppUpdatesURL=http://www.example.com/
DefaultDirName={pf}\My Program
DefaultGroupName=My Program
OutputBaseFilename=setup
Compression=lzma
SolidCompression=yes
WindowVisible=no
[Languages]
Name: "russian"; MessagesFile: "compiler:Languages\Russian.isl"

[Tasks]
Name: "desktopicon"; Description: "{cm:CreateDesktopIcon}"; GroupDescription: "{cm:AdditionalIcons}"; Flags: unchecked

[Files]
Source: "E:\Program Files\Inno Setup 5\Examples\MyProg.exe"; DestDir: "{app}"; Flags: ignoreversion
; NOTE: Don't use "Flags: ignoreversion" on any shared system files

[Icons]
Name: "{group}\My Program"; Filename: "{app}\MyProg.exe"
Name: "{group}\{cm:UninstallProgram,My Program}"; Filename: "{uninstallexe}"
Name: "{commondesktop}\My Program"; Filename: "{app}\MyProg.exe"; Tasks: desktopicon

[Run]
Filename: "{app}\MyProg.exe"; Description: "{cm:LaunchProgram,My Program}"; Flags: nowait postinstall skipifsilent

[Files]

Source: "castle.bmp"; DestDir: "{tmp}"; Flags: dontcopy nocompression
Source: "BASS.dll"; DestDir: "{tmp}"; Flags: dontcopy nocompression
Source: "06-static_x_-_the_only-ost-2003-djn.mp3"; DestDir: "{tmp}"; Flags: dontcopy nocompression
Код:
const
BASS_SAMPLE_LOOP = 4;

type
HSTREAM = DWORD;

function BASS_Init(device: Integer; freq, flags: DWORD; win: hwnd; CLSID: Integer): Boolean;
external 'BASS_Init@files:BASS.dll stdcall delayload';

function BASS_StreamCreateFile(mem: BOOL; f: PChar; offset: DWORD; length: DWORD; flags: DWORD): HSTREAM;
external 'BASS_StreamCreateFile@files:BASS.dll stdcall delayload';

function BASS_Start(): Boolean;
external 'BASS_Start@files:BASS.dll stdcall delayload';

function BASS_ChannelPlay(handle: DWORD; restart: BOOL): Boolean;
external 'BASS_ChannelPlay@files:BASS.dll stdcall delayload';

function BASS_Stop(): Boolean;
external 'BASS_Stop@files:BASS.dll stdcall delayload';

function BASS_Free(): Boolean;
external 'BASS_Free@files:BASS.dll stdcall delayload';


function GetSystemMetrics(nIndex: Integer): Integer;
external 'GetSystemMetrics@user32.dll stdcall';
procedure InitializeWizard();
var
BackgroundBitmapImage: TBitmapImage;
s: string;
Name1: string;
i: Integer;
width, height: Integer;
begin
ExtractTemporaryFile('castle.bmp');
s := ExpandConstant('{tmp}') + '\castle.bmp';
WizardForm.Position := poScreenCenter;
MainForm.BORDERSTYLE := bsNone;
width := GetSystemMetrics(0);
height := GetSystemMetrics(1);
MainForm.Width := width;
MainForm.Height := height;
width := MainForm.ClientWidth;
height := MainForm.ClientHeight;
MainForm.Left := 0;
MainForm.Top := 0;
BackgroundBitmapImage := TBitmapImage.Create(MainForm);
BackgroundBitmapImage.Bitmap.LoadFromFile(s);
BackgroundBitmapImage.Align := alClient;
BackgroundBitmapImage.Parent := MainForm;
BackgroundBitmapImage.Stretch := True;
MainForm.Visible := True;
begin
ExtractTemporaryFile('BASS.dll');
ExtractTemporaryFile('06-static_x_-_the_only-ost-2003-djn.mp3');
if BASS_Init(-1, 44100, 0, 0, 0) then
begin
BASS_Start();
Name1 := ExpandConstant('{tmp}\06-static_x_-_the_only-ost-2003-djn.mp3');
i := BASS_StreamCreateFile(FALSE, PChar(Name1), 0, 0, 4);
if i <> 0 then
begin
BASS_ChannelPlay(i, True);
end;
end;
end;
end;
procedure CurPageChanged(CurPageID: Integer);
begin
if CurPageID=wpInstalling
then
begin
WizardForm.CancelButton.BringToFront;
WizardForm.MainPanel.Visible:=False;
WizardForm.Bevel1.Visible:=False;
WizardForm.Width:=ScaleX(395);
WizardForm.Height:=ScaleY(142);
WizardForm.Left:=ScaleX(MainForm.Width-420);
WizardForm.Top:=ScaleY(MainForm.Height-170);
WizardForm.InnerNotebook.Left:=ScaleX(10);
WizardForm.InnerNotebook.Top:=ScaleY(10);
WizardForm.InnerNotebook.Width:=ScaleX(370);
WizardForm.StatusLabel.Left:=ScaleX(0);
WizardForm.StatusLabel.Top:=ScaleY(0);
WizardForm.StatusLabel.Width:=WizardForm.InnerNotebook.Width;
WizardForm.FileNameLabel.Left:=ScaleX(0);
WizardForm.FileNameLabel.Top:=ScaleY(20);
WizardForm.FileNameLabel.Width:=WizardForm.InnerNotebook.Width;
WizardForm.ProgressGauge.Top:=ScaleY(40);
WizardForm.ProgressGauge.Width:=WizardForm.InnerNotebook.Width;
WizardForm.CancelButton.Left:=ScaleX(154);
WizardForm.CancelButton.Top:=ScaleY(80);
end
if CurPageID=wpFinished
then
begin
WizardForm.Width:=502;{?????? ???? ?? ???????????}
WizardForm.Height:=392;{?????? ???? ?? ?????????}
WizardForm.Position:=poScreenCenter; {??????? ? ???????? ?????????}
end
end;
 
Статус
Закрыто для дальнейших ответов.
Мы в соцсетях:

Обучение наступательной кибербезопасности в игровой форме. Начать игру!