Показать полную графическую версию : Скрипты Inno Setup. Помощь и советы [часть 3]
Можно ли заставить установщик скопировать текст (настройки) из одного ини в другой (и что б с возможностью замены уже имеющихся ключей) »
Конечно можно
Писать длинный код в секцию INI не устраивает. (слишком много вариантов настроек) »
А вы думаете, что писать в секции кода придётся мало?
Рекомендую писать через секцию [INI], используя для заполнения данных - {ini:Filename,Section,Key|DefaultValue}.
Более подробно можете прочитать в Справке, раздел Constants.
Не подскажите как сделать окно инсталлятора поверх всех остальных? »
[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;
Дайте мне пожалуйста командную строку для распаковки FreeArc (sfx) архивов без запроса директории (в секции RUN)
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)
Подскажите пожалуйста что это за скин? И где его можно достать?
Помогите написать скрипт InnoSetup с веб установкой всё перерыл не чего не нашёл
Целый день работал над скриптом с нуля, и наконецто закончил.Вот зацените: [url]http://narod.ru/disk/7133018001/Setup.exe.html[/url
если думаете что чтото добавить надо, отпишитесь :)
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
Лександер, спасибо, но это только первая часть вопроса.
Первый мой скрипт: 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
Подарочек от меня) Еще один закос под мехов. Скрипт писался еще прошлым летом, с инно дружить я только начинал, поэтому простите за бардак в скрипте. Правда выложить решил только сейчас. Старался, подгонял все координаты\размеры, поэтому считаю этот скрипт более "полным". Координата текста брались из репака ассассина, окна установки из 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)
Ребята помогите к скрипту
[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
my-94, используй InnoSetup Script Joiner ссылка в закрепке темы :-)
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 нужно использовать чтобы это реализовать и в какой последовательности их использовать?
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
vBulletin v3.6.4, Copyright ©2000-2025, Jelsoft Enterprises Ltd.