Войти

Показать полную графическую версию : Скрипты Inno Setup. Помощь и советы [часть 3]


Страниц : 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 [52] 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 106 107 108 109 110 111 112 113 114 115 116 117 118 119 120 121 122 123 124 125 126 127 128 129 130 131 132 133 134 135 136 137 138 139 140 141 142 143 144 145 146 147 148 149 150 151 152 153 154 155 156 157 158 159 160 161 162 163 164 165 166 167 168 169 170 171 172 173 174 175 176 177 178 179 180 181 182 183 184 185 186 187 188

Serega
05-03-2011, 23:37
Можно ли заставить установщик скопировать текст (настройки) из одного ини в другой (и что б с возможностью замены уже имеющихся ключей) »
Конечно можно
Писать длинный код в секцию INI не устраивает. (слишком много вариантов настроек) »
А вы думаете, что писать в секции кода придётся мало?
Рекомендую писать через секцию [INI], используя для заполнения данных - {ini:Filename,Section,Key|DefaultValue}.
Более подробно можете прочитать в Справке, раздел Constants.

Serega
06-03-2011, 00:26
Не подскажите как сделать окно инсталлятора поверх всех остальных? »


[Setup]
AppName=My Program
AppVerName=My Program v 1.5
DefaultDirName={pf}\My Program
OutputDir=.
Compression=lzma2/ultra
InternalCompressLevel=ultra
SolidCompression=yes

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

[Code]
procedure btnClick(Sender: TObject);
begin
case WizardForm.FormStyle of
fsNormal:
begin
WizardForm.FormStyle := fsStayOnTop;
TButton(Sender).Caption := 'Отменить стиль StayOnTop';
end;
fsStayOnTop:
begin
WizardForm.FormStyle := fsNormal;
TButton(Sender).Caption := 'Задать стиль StayOnTop';
end;
end;
end;

procedure InitializeWizard();
begin
with TButton.Create(WizardForm) do
begin
Parent := WizardForm;
SetBounds(ScaleX(20), WizardForm.NextButton.Top, ScaleX(200), WizardForm.NextButton.Height);
Caption := 'Задать стиль StayOnTop';
OnClick := @btnClick;
end;
end;

procedure CancelButtonClick(CurPageID: Integer; var Cancel, Confirm: Boolean);
begin
// это необходимо, а то при ножатии на кнопку, мы не увидим сообщения
if WizardForm.FormStyle = fsStayOnTop then
WizardForm.FormStyle := fsNormal;
end;

Vamp1re
06-03-2011, 14:24
Дайте мне пожалуйста командную строку для распаковки FreeArc (sfx) архивов без запроса директории (в секции RUN)

duxa
06-03-2011, 15:29
Vamp1re, Filename: "{src}\data3.bin"; Parameters: " -y -s -d""{app}"""; Flags: waituntilterminated skipifdoesntexist; WorkingDir: "{src}";

Gnom_aka_Lexander
07-03-2011, 12:31
Минималистичный инсталлятор для игры Renegade + ISDone.
Внимательно читаем шапку скрипта :)
v-1.0 - Минимализм и строгость + ISDone Скачать (http://rghost.ru/4661187)
v-1.1 - добавлены сплеш и деинсталлятор в стиле инсталлятора. Скачать (http://rghost.ru/4663821)
v-1.2 final - Тройной сплеш и Месседж-бокс по окончании установки. Скачать (http://rghost.ru/4743001)

http://img850.imageshack.us/img850/824/renegade.th.jpg (http://img850.imageshack.us/i/renegade.jpg/)

Black666angel
09-03-2011, 00:35
Народ help не подскажите если реально такое вместо стандартного (MsgBox сообщения) чтоб вызывалась табличка из файла к примеру из этой *.dll (http://rghost.ru/4657059)

EvilDemon
09-03-2011, 04:09
http://fotonons.ru/thumbs/09.03.11/4444444.png (http://fotonons.ru/?v=4444444.png)

Подскажите пожалуйста что это за скин? И где его можно достать?

ZooM1k
09-03-2011, 13:55
Помогите написать скрипт InnoSetup с веб установкой всё перерыл не чего не нашёл

Vamp1re
09-03-2011, 19:54
Целый день работал над скриптом с нуля, и наконецто закончил.Вот зацените: [url]http://narod.ru/disk/7133018001/Setup.exe.html[/url
если думаете что чтото добавить надо, отпишитесь :)

actavir
09-03-2011, 20:38
Vamp1re, а можно код на предложеный тобой инсталлятор, мне понравился))))

R.i.m.s.k.y.
09-03-2011, 20:54
Дайте, пожалуйста, примеры как в инно работать с разными языками.

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

Требуется: в секции Setup LicenseFile и InfoBeforeFile менялись в зависимости от языка, файлы копировались в зависимости от выбранного языка, в списке компонентов и Tasks сообщения были в зависсимости от языка. Насколько я понял в секциях нет параметра типа language: rus

Заранее спасибо!

Gnom_aka_Lexander
09-03-2011, 21:26
R.i.m.s.k.y., они тогда не в Setup меняются а так:
[Languages]
Name: ru; MessagesFile: compiler:Languages\Russian.isl; LicenseFile: 1.rtf; InfoBeforeFile: Пролог_ru.rtf; InfoAfterFile: Эпилог_ru.rtf
Name: en; MessagesFile: compiler:Languages\English.isl; LicenseFile: 2.rtf; InfoBeforeFile: Пролог_En.rtf; InfoAfterFile: Эпилог_En.rtf

[Files]
Source: 1; DestDir: {app}; Languages: ru;
Source: 2; DestDir: {app}; Languages: en;
[Tasks]
Name: 1; Description: русский; Languages: ru;
Name: 2; Description: Английский; Languages: en;
а в Setup, тогда, LicenseFile и InfoBeforeFile, я думаю, прописывать не стоит, хотя ошибки быть не должно вроде :)
А на вторю часть я отвечал уже - язык может применятся как компонент, пример дополнил :)

R.i.m.s.k.y.
09-03-2011, 21:38
Лександер, спасибо, но это только первая часть вопроса.

Vamp1re
10-03-2011, 16:04
Первый мой скрипт: Dead Space 2 + ISDone 0.5 final
Скрипт довольно простой.Возможность подключать неограниченое количество разных модулей, добавлен всем требуемый черный цвет инсталлятора и другое увидете в скрипте :)
http://s006.radikal.ru/i215/1103/d7/50e4303dee8b.jpg http://i034.radikal.ru/1103/65/e1ab4f635624.jpg


Скачать можно перейдя по ссылке ниже:
http://rghost.ru/4706574

duxa
10-03-2011, 19:19
Подарочек от меня) Еще один закос под мехов. Скрипт писался еще прошлым летом, с инно дружить я только начинал, поэтому простите за бардак в скрипте. Правда выложить решил только сейчас. Старался, подгонял все координаты\размеры, поэтому считаю этот скрипт более "полным". Координата текста брались из репака ассассина, окна установки из blur
R.G. Механики + ISDone 4.0 или ISDone 5.0 Final (http://rghost.ru/4894613)
http://s16.radikal.ru/i191/1011/9b/e193953de8a5t.jpg (http://radikal.ru/F/s16.radikal.ru/i191/1011/9b/e193953de8a5.jpg.html)http://s009.radikal.ru/i307/1011/4e/1dda21ec66e5t.jpg (http://radikal.ru/F/s009.radikal.ru/i307/1011/4e/1dda21ec66e5.jpg.html)http://s012.radikal.ru/i321/1011/5b/deb266b239c5t.jpg (http://radikal.ru/F/s012.radikal.ru/i321/1011/5b/deb266b239c5.jpg.html)

my-94
10-03-2011, 20:15
Ребята помогите к скрипту

[Setup]
AppId={{D12015CC-4FEA-40CD-A1D7-289B6D8924A5}
AppName=1
AppVerName=1.0
AppPublisher=1
DefaultDirName=C:\Games\1
DefaultGroupName=1
OutputBaseFilename=setup
Compression=lzma/ultra64
SolidCompression=true
;disablereadypage=true
InternalCompressLevel=ultra64
DiskSpanning=true
PrivilegesRequired=none
WizardImageFile=1.bmp
WizardSmallImageFile=mini.bmp
UninstallDisplayIcon={tmp}\5.ico
AppVersion=
AllowRootDirectory=true
DirExistsWarning=no
AllowNoIcons=true
UninstallFilesDir={app}\Uninstall
VersionInfoProductName=1
AppCopyright=Dragon

[Types]

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

[Messages]
BeveledLabel=111

[Tasks]
Name: desktopicon; Description: {cm:CreateDesktopIcon}; GroupDescription: {cm:AdditionalIcons}
Name: quicklaunchicon; Description: {cm:CreateQuickLaunchIcon}; GroupDescription: {cm:AdditionalIcons}; Flags: unchecked
Name: tasks1; Description: Обновить компоненты DirectX; GroupDescription: Дополнительные программы:

[Files]
Source: Office2007.cjstyles; DestDir: {tmp}; Flags: dontcopy nocompression
Source: ISSkin.dll; DestDir: {tmp}; Flags: dontcopy nocompression
source: 1.bmp; DestDir: {tmp}; Flags: dontcopy nocompression
Source: 3.bmp; DestDir: {tmp}; Flags: dontcopy nocompression
Source: isgsg.dll; DestDir: {tmp}; Flags: dontcopy nocompression
Source: splash.png; DestDir: {tmp}; Flags: dontcopy nocompression
Source: 5.ico; DestDir: {tmp}

[Icons]


[Run]
Filename: {src}\Redist\directx\dxsetup.exe; WorkingDir: {src}\Redist\directx\; Tasks: Tasks1


[UninstallDelete]
Name: {app}; Type: filesandordirs; Tasks: ; Languages:
[Code]
var
AboutButton, CancelButton, URLButton: TButton;
BackgroundBitmapImage: TBitmapImage;
BackgroundBitmapText: TNewStaticText;
BmpFile: TBitmapImage;

procedure LoadSkin(lpszPath: String; lpszIniFileName: String);
external 'LoadSkin@files:isskin.dll stdcall';

procedure UnloadSkin();
external 'UnloadSkin@files:isskin.dll stdcall';

procedure ShowSplashScreen(p1:HWND;p2:string;p3,p4,p5,p6,p7:integer;p8:boolean;p9:Cardinal;p10:integer); external 'ShowSplashScreen@files:isgsg.dll stdcall delayload';

function InitializeSetup(): Boolean;
begin
ExtractTemporaryFile('Office2007.cjstyles');
LoadSkin(ExpandConstant('{tmp}\Office2007.cjstyles'), '');
Result := True;
end;

procedure DeinitializeSetup();
begin
UnloadSkin();
end;

procedure AboutButtonOnClick(Sender: TObject);
begin
MsgBox('is', mbInformation, mb_Ok);
end;

procedure URLLabelOnClick(Sender: TObject);
var
ErrorCode: Integer;
begin
ShellExec('open', 'http://is.ru#lt', '', '', SW_SHOWNORMAL, ewNoWait, ErrorCode);
end;

procedure InitializeWizard();
begin
ExtractTemporaryFile('1.bmp'); //Извлекаем файл, который пойдет в окно инсталлятора
ExtractTemporaryFile('3.bmp'); //Извлекаем файл, который пойдет в окно инсталлятора
//Вставляем изображение в окно инсталлятора, для каждой страницы нужно добвлять изображение заново
ExtractTemporaryFile('splash.png');
BmpFile:= TBitmapImage.Create(WizardForm);
with BmpFile do begin
Bitmap.LoadFromFile(ExpandConstant('{tmp}\1.bmp'));
SetBounds(ScaleX(0), ScaleY(0), ScaleX(497), ScaleY(313));
Stretch:= true;
Parent:= WizardForm.WelcomePage;
end;

BmpFile:= TBitmapImage.Create(WizardForm);
with BmpFile do begin
Bitmap.LoadFromFile(ExpandConstant('{tmp}\3.bmp'));
SetBounds(ScaleX(0), ScaleY(0), ScaleX(497), ScaleY(313));
Stretch:= true;
Parent:= WizardForm.FinishedPage;
end;

ShowSplashScreen(WizardForm.Handle,ExpandConstant('{tmp}')+'\splash.png',1000,3000,1000,0,255,False, $FFFFFF,10);

with WizardForm do
begin
WelcomeLabel1.Hide;
WelcomeLabel2.Hide;
FinishedHeadingLabel.Hide;
FinishedLabel.Hide;
end;
begin
with WizardForm.NextButton do
begin
Left := ScaleX(320);
end;

CancelButton := WizardForm.CancelButton;
AboutButton := TButton.Create(WizardForm);
with AboutButton do begin
Left := WizardForm.ClientWidth - CancelButton.Left - CancelButton.Width;
Top := CancelButton.Top;
Width := CancelButton.Width;
Height := CancelButton.Height;
Caption := '&Repack info';
OnClick := @AboutButtonOnClick;
Parent := WizardForm;
end;

URLButton := TButton.Create(WizardForm);
with URLButton do begin
Left := AboutButton.Left + AboutButton.Width + ScaleX(50);
Top := CancelButton.Top;
Width := CancelButton.Width;
Height := CancelButton.Height;
Caption := 'Наш Сайт';
OnClick := @URLLabelOnClick;
Parent := WizardForm;
end;
end;
BackgroundBitmapImage := TBitmapImage.Create(MainForm);
BackgroundBitmapImage.Left := ScaleX(50);
BackgroundBitmapImage.Top := ScaleY(100);
BackgroundBitmapImage.AutoSize := True;
BackgroundBitmapImage.Bitmap := WizardForm.WizardBitmapImage.Bitmap;
BackgroundBitmapImage.Parent := MainForm;

BackgroundBitmapText := TNewStaticText.Create(MainForm);
BackgroundBitmapText.Left := BackgroundBitmapImage.Left;
BackgroundBitmapText.Top := BackgroundBitmapImage.Top + BackgroundBitmapImage.Height + ScaleY(8);
BackgroundBitmapText.Caption := 'TBitmapImage';
BackgroundBitmapText.Parent := MainForm;
end;

Procedure CurPageChanged(CurPageID: Integer);
Begin
if CurPageID <> wpWelcome then begin
AboutButton.Hide; URLButton.Hide end else begin
AboutButton.Show; URLButton.Show; end;
end;

Прикрепить
вот это


[code]
var
TDV: TFolderTreeView;
TFV: TStartMenuFolderTreeView;

procedure TDVOnChange(Sender: TObject);
begin
WizardForm.DirEdit.Text:= AddBackslash(TDV.Directory)+'MyApp';
end;

procedure TFVOnChange(Sender: TObject);
begin
WizardForm.GroupEdit.Text:= AddBackslash(TFV.Directory)+'MyApp';
end;

procedure InitializeWizard();
begin
TDV:= TFolderTreeView.Create(WizardForm);
TDV.Top:= WizardForm.DirEdit.Top+28;
TDV.Width:= 417;
TDV.Height:= 100;
TDV.OnChange:= @TDVOnChange;
TDV.Parent:= WizardForm.SelectDirPage;


TFV:= TStartMenuFolderTreeView.Create(WizardForm);
TFV.Top:= WizardForm.GroupEdit.Top+28;
TFV.Width:= 417;
TFV.Height:= 100;
TFV.SetPaths(ExpandConstant('{userprograms}'),ExpandConstant('{commonprograms}'),ExpandConstant('{us erstartup}'),ExpandConstant('{commonstartup}'));
TFV.OnChange:= @TFVOnChange;
TFV.Parent:= WizardForm.SelectProgramGroupPage;
end;


Чтоб вот так получилось

http://i.imgur.com/KXGLX.jpg

actavir
10-03-2011, 21:06
my-94, используй InnoSetup Script Joiner ссылка в закрепке темы :-)

my-94
10-03-2011, 22:01
actavir

Уу спасибо и не предполагал что такая программа есть :yahoo:

krevedki
10-03-2011, 22:05
У меня вот такая цель - имеется файл zip и мне надо обновить содержимое внутри него.
Для этого использую 7za.exe с cmd файлом, где прописаны параметры упаковки.
Внутри zip файла лежит папка, в которой лежат те файлы, которые мне надо заменить + ещё одна папка с другими файлами, которые мне трогать не надо.
Также у меня есть 10 файлов с расширением xml, которые собственно говоря мне и надо засунуть в zip файл, в котором лежат точно такие же файлы. Проще говоря это русификатор.
Мне нужно обновить содержимое zip файла, поместив в инсталятор только 10 файлов. Чтобы внутри инсталятора был 7za.exe и cmd файлик и 10 xml файлов.
При запуске чтобы распаковывались все эти файлы в папку где лежит zip файл (путь бы указывался при установке), затем запускался cmd файл, в нём у меня прописано всё необходимое для обновления содержимого zip файла. После того как все действия выполнятся, т.е. обновится содержимое, чтобы все xml файлы и exe + cmd файлы удалились и установка завершилась.

Вопрос вот в чём - какие модули для inno setup нужно использовать чтобы это реализовать и в какой последовательности их использовать?

actavir
10-03-2011, 22:09
my-94, если хотите выразить благодарность, то к словам ещё можно приложить нажать "Полезное сообщение" :)

krevedki, тут можно обойтись стандартными операциями
1. Ваши файлы добавить в инсталятор следующим образом : [Files]Source: unarc.dll; DestDir: {tmp}; Flags: deleteafterinstall
{tmp} заменяете на папку в которой находится zip архив который нужно обновить
unarc.dll замените на имя файла (эти файлы должны быть в папке со скриптом .iss)
2. Проделываете эту операцию со всеми файлами, в том числе и с exe + cmd.
3. В процессе установки можно запустить программу, т.е. после распаковки файлов которые мы добавили в первом пункте, мы можем запустить один из них, я так понял что вам нужно cmd:
[RUN]
Filename: {src}\DirectX\DXSETUP.exe; WorkingDir: {src}\DirectX; Parameters: /silent; StatusMsg: Установка DirectX. Пожалуйста подождите...; Tasks: directx; Flags: waituntilterminated;

В этом скрипте измените все имена файлов и пути к ним.
После того, как у вас пройдут все операции, все файлы удалятся.

Я думаю должно получиться. :)

krevedki, как получится или что-то неполучится отпишись!!!




© OSzone.net 2001-2012