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

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

Автор: NightW0lf
Дата сообщения: 12.01.2007 22:02
Genri
А можно добавить текст в этот прогресс бар?
Автор: maxdddca123
Дата сообщения: 12.01.2007 22:27
Подскажите как выделить строку из ини файла и присвоить переменной первые 2 символа этой строки ?

Добавлено:
Почему если я пишу вот так
[Files]
Source: G:\Модуль\*.ini; DestDir: {app}; Flags: recursesubdirs createallsubdirs sortfilesbyextension ignoreversion; AfterInstall: Boxname
то процедура Boxname выполняется каждый раз после распаковки КАЖДОГО файла ? Как это убрать ? Мне нужно, что бы она выполнилась 1 раз после распаковки ВСЕХ файлов и всё.
Автор: Serge2005
Дата сообщения: 13.01.2007 00:25
Перезалейте, пожалуйста, руководства!

Скажите, пожалуйста, как в качестве пути вставить имя каталога, которое пользователь ввел для установки?
То есть, пользователь выбирает ставить программы в %ProgramFiles%\<b>Program_test</b>.
Программа должна скопировать часть файлов в эту папку, а часть в {userappdata}\<b>Program_test</b>. Как это осуществить?
Автор: Sampron
Дата сообщения: 13.01.2007 00:27
NightW0lf

Цитата:
А можно добавить текст в этот прогресс бар?

+1 Тоже этого хочу но в его коде это не получается.

Genri
ПЛЗ добавь текст с возможностью в дальнейшем редактировать размер страницы, и если реально сделай так чтобы прогресс-бар выполнялся одновременно с Splash-рисунком.
Автор: Genri
Дата сообщения: 13.01.2007 00:28
NightW0lf
Цитата:
А можно добавить текст в этот прогресс бар?
-- c Inno Setup идет такой замечательный пример, как CodeClasses.iss. Даже беглого взгляда на него достаточно, чтобы дать ответ на твой вопрос.


Добавлено:
Sampron
Цитата:
Тоже этого хочу но в его коде это не получается.
-- хм.. даже представить не могу, что надо сделать, чтобы не получилось.
Код:
[Setup]
AppName=My Program
AppVerName=My Program version 1.5
DefaultDirName={pf}\My Program
DisableProgramGroupPage=yes
WindowVisible=yes

[Files]
Source: Files\*.*; DestDir: {app}; Flags: ignoreversion
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);
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;
Автор: Serge2005
Дата сообщения: 13.01.2007 00:38

Цитата:
Перезалейте, пожалуйста, руководства!

Скажите, пожалуйста, как в качестве пути вставить имя каталога, которое пользователь ввел для установки?
То есть, пользователь выбирает ставить программы в %ProgramFiles%\<b>Program_test</b>.
Программа должна скопировать часть файлов в эту папку, а часть в {userappdata}\<b>Program_test</b>. Как это осуществить?


Дополнение: это не дефолтовая директория, но для дефолтовой тоже должно работать....

2. - Потом в одном из скопированных в аппдата фалов (ини) надо поменять значения некоторых параметром. Как там прописывать пути?
Автор: Genri
Дата сообщения: 13.01.2007 00:39
XuM -- слегка глянул. все-таки работает. но есть глюк (пока не разобрался) - модифай работает только при выборочной установке. т.е. если ставить по полной - при модифай все анчекед. похоже это не твой баг, а UninsHs.exe. будет время - повожусь.
Автор: BAPK
Дата сообщения: 13.01.2007 00:46
Мдя. Хоть бы послали куда-нибудь...
Автор: Genri
Дата сообщения: 13.01.2007 00:46
Serge2005 -- думаю, сделать можно, но не нужно. ИМХО более правильно, в {userappdata} иметь фолдер с именем программы, а не именем папки, куда программа установлена. Иначе могут быть проблемы. Например, юзер установит программу в папку ХХХ, которой нет в ProgramFiles, но есть в userappdata
Автор: Sampron
Дата сообщения: 13.01.2007 00:55
Genri
СУПЕР!!! ОГРОМНОЕ СПАСИБО!!!

Теперь про InstallShield можно забыть, когда всю красоту можно реализовать в inno, с помощью Лучших на форуме
Автор: maxdddca123
Дата сообщения: 13.01.2007 01:03
Genri
Можно ли в Page.CheckListBox прикрутить горизонтальный скрол? А то текст не умещается, и некрасиво смотрится когда длинные названия.
Автор: Genri
Дата сообщения: 13.01.2007 01:21
BAPK -- посмотри [more=здесь]
#define ISSI_IncludePath "C:\ISSI"
#include ISSI_IncludePath+"\_issi.isi"

[ISSI]
#define ISSI_Russian
#define ISSI_Russian "C:\Temp\Настройки.rtf"
#define ISSI_LicensePrint
#define ISSI_Russian
#define ISSI_About "{cm:issiAbout}"
#define ISSI_About "NameAndVersion"
#define ISSI_AppVersion "0.0.5.1"
#define ISSI_SplashScreen "C:\ISSI\issi_example_Images\issi_800x600.bmp"
#define ISSI_SplashScreen_T 2
#define ISSI_SplashScreen_X 500
#define ISSI_SplashScreen_Y 300
#define ISSI_Splash_Corner 100
#define ISSI_URL "http://infofree.ru/forum/showthread.php?t=25896"
#define ISSI_UrlText "Помощь и настройка"

[Setup]
AppName=ApexDC++ (InfoFree Hub)
AppVerName=ApexDC++ (InfoFree Hub)
AppPublisher=Infofree, Inc.
AppPublisherURL=http://infofree.ru
AppSupportURL=http://infofree.ru/forum/showthread.php?t=25896
AppUpdatesURL=http://infofree.ru/forum/downloads.php?do=file&id=123
DefaultDirName={pf}\ApexDC++(InfoFree Hub)
DefaultGroupName=ApexDC++ (InfoFree Hub)
AllowNoIcons=true
;OutputDir=C:\Temp
OutputBaseFilename=ApexDC++(InfoFree Hub)
;SetupIconFile=C:\Temp\1.ico
Compression=lzma
SolidCompression=true
VersionInfoVersion=0.0.5.1
VersionInfoCopyright=BAPK
;WizardImageFile=C:\Program Files\Inno Setup 5\Modern\SetupModern21.bmp
;WizardSmallImageFile=C:\Program Files\Inno Setup 5\Modern\Small\SetupModernSmall16.bmp
AppID={{6EF43DCA-3877-41AC-819A-FE4B027968F6}
ShowLanguageDialog=no
AppVersion=0.0.5.1
UninstallDisplayName=ApexDC++(InfoFree Hub)
VersionInfoTextVersion=Beta 5
DisableStartupPrompt=true
FlatComponentsList=false
VersionInfoCompany=infofree.ru
VersionInfoDescription=Тестовая версия
AppCopyright=BAPK
TimeStampsInUTC=true
LicenseFile=D:\APP\Inno Setup 519\Examples\Readme.txt

[Messages]
BeveledLabel=- Packaged by BAPK

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

[Tasks]
Name: desktopicon; Description: {cm:CreateDesktopIcon}; GroupDescription: {cm:AdditionalIcons}
Name: quicklaunchicon; Description: {cm:CreateQuickLaunchIcon}; GroupDescription: {cm:AdditionalIcons}; Flags: unchecked
Name: rus; Description: Русификация; GroupDescription: Только если программа устанавливается в каталог по умолчанию:; Flags: unchecked

[Files]
Source: Files\*; DestDir: {app}; Flags: ignoreversion
Source: Files\*; DestDir: {app}\EmoPacks\; Flags: ignoreversion recursesubdirs createallsubdirs
Source: Files\*; DestDir: {app}\Settings\; Flags: ignoreversion recursesubdirs createallsubdirs
Source: Files\*; DestDir: {app}\Themes\; Flags: ignoreversion recursesubdirs createallsubdirs
Source: Files\*; DestDir: {app}
Source: Files\*; DestDir: {app}\Settings\; Flags: onlyifdestfileexists overwritereadonly; Tasks: rus
Source: Files\*; DestDir: {app}\Settings\; Flags: overwritereadonly ignoreversion; Languages:
; Tasks: Convex_Olympus
Source: Files\*; DestDir: {app}\Settings\; Flags: overwritereadonly ignoreversion; Languages:
; Tasks: Skynet
Source: Files\*; DestDir: {app}\Settings\; Flags: overwritereadonly ignoreversion; Languages:
; Tasks: Kabinet

[INI]
Filename: {app}\ISTool.url; Section: InternetShortcut; Key: URL; String: http://infofree.ru/forum/showthread.php?t=25896/; Tasks: ; Languages:

[Icons]
Name: {group}\ApexDC++(InfoFree Hub); Filename: {app}\ApexDC.exe
Name: {group}\{cm:UninstallProgram,ApexDC++(InfoFree Hub)}; Filename: {uninstallexe}
Name: {userdesktop}\ApexDC++(InfoFree Hub); Filename: {app}\ApexDC.exe; Tasks: desktopicon
Name: {userappdata}\Microsoft\Internet Explorer\Quick Launch\ApexDC++(InfoFree Hub); Filename: {app}\ApexDC.exe; Tasks: quicklaunchicon

[Run]
Filename: {app}\ApexDC.exe; Description: {cm:LaunchProgram,ApexDC++(InfoFree Hub)}; Flags: nowait postinstall skipifsilent

[UninstallDelete]
Name: {app}; Type: filesandordirs; Tasks: ; Languages:

[Code]
var
Page: TInputOptionWizardPage;

procedure InitializeWizard();
begin
Page := CreateInputOptionPage(wpSelectTasks,
'License Information', 'Are you a registered user?',
'If you are a registered user, please check the box below, then click Next.',
True, False);
Page.Add('Kabinet');
Page.Add('Skynet');
Page.Add('Convex, Olympus');
Page.Add('Planet, Extrim, Insis, Infotek');
end;[/more] Слегка подправил. Но это еще без обработки выбора. Просто интегрируй в свой скрипт и попробуй собрать.
Автор: Serge2005
Дата сообщения: 13.01.2007 09:33
Genri
Наверно, проще будет так:
[Setup]
AppName=Opera
AppVerName=Opera 9.10
DefaultDirName={pf}\Opera
OutputBaseFilename=OperaSetup
Compression=lzma/ultra
SolidCompression=true
DisableDirPage=false
UsePreviousAppDir=false
DisableProgramGroupPage=true
InternalCompressLevel=ultra
MergeDuplicateFiles=false
RestartIfNeededByRun=false
DefaultGroupName=Opera
DisableFinishedPage=true
UsePreviousTasks=false
AlwaysShowDirOnReadyPage=true
AlwaysShowGroupOnReadyPage=true
ShowLanguageDialog=no
UsePreviousGroup=false
UsePreviousSetupType=false
DisableReadyPage=false
UseSetupLdr=true
AllowRootDirectory=true
VersionInfoVersion=01
VersionInfoTextVersion=13.01.2007
AppCopyright=Serge
VersionInfoCompany=FreeLance
VersionInfoDescription=Opera 9.10 by Serge

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

[Files]
Source: {app}\*; DestDir: {app}; Flags: recursesubdirs createallsubdirs ignoreversion
Source: {add}\*; DestDir: {userappdata}\Opera\{%WizardDirValue}; Flags: recursesubdirs createallsubdirs ignoreversion

[INI]
Filename: {userappdata}\Opera\{%WizardDirValue}\profile\opera6.ini; Section: User Prefs; Key: Language File; String: {app}\russian.lng
Filename: {userappdata}\Opera\{%WizardDirValue}\profile\opera6.ini; Section: User Prefs; Key: Download Directory; String: {sd}\Downloads\Opera\
Filename: {userappdata}\Opera\{%WizardDirValue}\profile\opera6.ini; Section: Saved Settings; Key: Save Dir; String: {sd}\Downloads\Opera\

[Icons]
Name: {commonprograms}\Opera; Filename: {app}\Opera.exe; Comment: Opera; WorkingDir: {app}; IconFilename: {app}\Opera.exe
Name: {commondesktop}\Opera; Filename: {app}\Opera.exe; Comment: Opera; WorkingDir: {app}; IconFilename: {app}\Opera.exe

[UninstallDelete]
Name: {app}; Type: filesandordirs
Name: {userappdata}\Opera\{%WizardDirValue}; Type: filesandordirs

На данный момент скрипт работает, но Source: {add}\*; DestDir: {userappdata}\Opera\{%WizardDirValue} копирует не в {%WizardDirValue} а просто в {userappdata}\Opera. А все остальное работает.....Подскажите, пожалуйста, что исправить..?
Автор: XuM
Дата сообщения: 13.01.2007 11:20
Genri
да, именно так все, как ты описал
Автор: NightW0lf
Дата сообщения: 13.01.2007 13:09
Serge2005

Цитата:
Перезалейте, пожалуйста, руководства!

Перезалил на rl-team.ru
Автор: BAPK
Дата сообщения: 13.01.2007 13:32
Genri

Цитата:
BAPK -- посмотри здесь Слегка подправил. Но это еще без обработки выбора. Просто интегрируй в свой скрипт и попробуй собрать.

Благодарю. Собралось. ))) Меня уже это радует... Осталось с выбором разобраться.

Еще один вопросик. Можно сделать так, чтобы путь ((после выбора) куда приложение устанавливается) после установки заменял определенную переменную в текстовом файле?
Автор: NightW0lf
Дата сообщения: 13.01.2007 14:15
Genri
А возможно в этом новом ProgressBar'e сделать так что бы одновременно запускался ProgressBar и Splash.bmp от Sampron и еще добавить надпись в заголовке ProgressBar'a?
[more=ProgressBar]

Код:
[Setup]
AppName=My Program
AppVerName=My Program version 1.5
DefaultDirName={pf}\My Program
DisableProgramGroupPage=yes
WindowVisible=yes

[Files]
Source: Files\*.*; DestDir: {app}; Flags: ignoreversion
Source: WizModernSmallImage.bmp; Flags: dontcopy


Код:
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);
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;
Автор: Sampron
Дата сообщения: 13.01.2007 14:53
NightW0lf

Цитата:
А возможно в этом новом ProgressBar'e сделать так что бы одновременно запускался ProgressBar и Splash.bmp

У меня он одоновременно запускается при фоновом окне с WindowVisible=no, а без него по очереди что очень жаль. Сюда выложил пример: http://data.cod.ru/386629066
Автор: Serge2005
Дата сообщения: 13.01.2007 15:16
NightW0lf
Спасибо, а еще что-нибудь есть?
Может есть что-то на тему, которая мне нужна (*про имя директории....см. выше*)?
Автор: NightW0lf
Дата сообщения: 13.01.2007 15:40
Serge2005

Цитата:
Может есть что-то на тему, которая мне нужна (*про имя директории....см. выше*)?

У меня есть мое небольшое руководство, НО там того что тебя ИМЕННО интересует нет .

Добавлено:
Sampron

Цитата:
У меня он одоновременно запускается при фоновом окне с WindowVisible=no, а без него по очереди что очень жаль. Сюда выложил пример: http://data.cod.ru/386629066

Спасибо за помощь!
НО все таки как добавить текст в заголовок ProgressBar'a??

Автор: Serge2005
Дата сообщения: 13.01.2007 15:46
NightW0lf
Ясно, а ты не знаешь, как реализовать? какой переменной это обозначается и как ее вставить в путь?
Похоже я был не прав, когда считал скрипт частично рабочим: он просто игнорит %WizardDirValue, как будто его не написано в путях, но ошибки не выбает.
Автор: NightW0lf
Дата сообщения: 13.01.2007 15:53
Serge2005

Цитата:
Ясно, а ты не знаешь, как реализовать? какой переменной это обозначается и как ее вставить в путь?

Нет , я бы мог помочь но с таким в InnoSetup ни разу не сталкивался.
Автор: maxdddca123
Дата сообщения: 13.01.2007 15:57
Serge2005
Может так заработает ? %WizardDirValue%
Когда с обеих концов проценты.
Автор: Serge2005
Дата сообщения: 13.01.2007 16:29
maxdddca123
Нет, так не работает..это я все проверял....

Хорошо, может кто знает, как из переменной {app} вытащить имя самой последней директории? Например, если {app)=C:\Program Files\Test_prog, то нужно получить Test_prog.....
Автор: serg_aka_lain
Дата сообщения: 13.01.2007 18:04
NightW0lf:

НО все таки как добавить текст в заголовок ProgressBar'a??
//Caption := 'тра-ла-ла'

procedure InitializeWizard();
var
Form: TSetupForm;
ProgressBar: TNewProgressBar;
CancelButton: TButton;
StaticText: TNewStaticText;
BitmapImage: TBitmapImage;
BitmapFileName: String;
i: Integer;
BackgroundBitmapImage: TBitmapImage;
s: string;
width, height: 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'
Автор: san007
Дата сообщения: 13.01.2007 18:27

Цитата:
Руководство по расширенным возможностям Inno Setup 5 (не для чайников), забираем здесь(3 версия),
новое (4 версия) руководство.
Наша признательность автору проекта - Kindly


Не качается ни 3, ни 4 версия в шапке - ссылки дохлые! Перезалейте 4версию руководства от Kindly куда-нибудь или обновите в шапке. Плз.
Автор: Serge2005
Дата сообщения: 13.01.2007 18:59
san007
Я только что просил... Спасибо NightW0lf

Цитата:
Serge2005

Цитата:Перезалейте, пожалуйста, руководства!


Перезалил на http://rl-team.ru/822323

Автор: NightW0lf
Дата сообщения: 13.01.2007 20:50
serg_aka_lain
Спасибо ТЕБЕ и ВСЕМ кто помогал создавать!
Тперь полностью сделал клон InstallShield .
Автор: Sampron
Дата сообщения: 13.01.2007 21:09
NightW0lf

Цитата:
Тперь полностью сделал клон InstallShield

Если б ещё скины в инно как в InstallShield в стиле Windows XP.

Автор: Genri
Дата сообщения: 13.01.2007 23:39
Serge2005 -- Можешь попробовать следующее:

Код:
[Files]
Source: Files\*.*; DestDir: {userappdata}\Opera\{code:ShortAppDir}; Flags: ignoreversion


Код:
function ShortAppDir(Param: String): String;
var
AppDir, TrimAppDir: String;
begin
AppDir:= WizardDirValue;
TrimAppDir:= ExtractFilePath(AppDir + '..');
StringChangeEx(AppDir, TrimAppDir, '', True);
Result:= AppDir;
end;

Страницы: 123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172

Предыдущая тема: ICONS


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