Показать полную графическую версию : Скрипты Inno Setup. Помощь и советы [часть 7]
Юрій_Окропірідзе@vk
24-12-2014, 17:39
Извините за столь глупый вопрос , но как вы это сделали? Просто я этот скрипт буду не здесь использовать , и очень интересно как вы ето сделали
Юрій_Окропірідзе@vk, вы пошли по верному пути, но в оконцовке напутали с порядком применения процедур, переписав вызваную ранее другой, из-за этого был глюк с фоном, плюс совершенно ненужный дубль InitializeWizard2. Все что я изменил выделено в блоки линиями слешев (////////////////////////////)
Это:
MyLogo:=ImgLoad(WizardForm.Handle,ExpandConstant('{tmp}\logo.png'), ScaleX(20), ScaleY(480), ScaleX(300), ScaleY(100), False, False); - строка 326
и
with TLabel.Create(nil) do
begin
Parent := WizardForm;
SetBounds(ScaleX(20), ScaleY(480), ScaleX(130), ScaleY(40));
Transparent:=True;
Cursor := crHand;
OnClick:=@LogoLabelOnClick;
end; - строка 916 - 923
sergey3695
24-12-2014, 18:21
sergey3695, я не разобрался в том, что вы мне скинули ( »
Kashtan007, http://rghost.ru/59952866
В чем там разбираться? :dont-know
Юрій_Окропірідзе@vk
24-12-2014, 20:06
Юрій_Окропірідзе@vk, вы пошли по верному пути, но в оконцовке напутали с порядком применения процедур, переписав вызваную ранее другой, из-за этого был глюк с фоном, плюс совершенно ненужный дубль InitializeWizard2. Все что я изменил выделено в блоки линиями слешев (////////////////////////////) »
Чувак, спасибо , все получилось , ты лучший!!!
В чем там разбираться? »Скрипт не рабочий.
[Setup]
AppName=VCL Styles Example
AppVerName=VCL Styles Example v1.0
AppVersion=1.0.0.0
AppCopyright=The Road To Delphi
DefaultDirName={pf}\The Road To Delphi\VCL Styles Inno Demo
DefaultGroupName=The Road To Delphi
Compression=lzma
SolidCompression=true
OutputDir=.
OutputBaseFilename=Setup
VersionInfoVersion=1.0.0.0
VersionInfoCompany=The Road To Delphi
VersionInfoDescription=VCL Styles Setup
VersionInfoTextVersion=1, 0, 0, 0
InternalCompressLevel=max
[Files]
Source: VclStyles.dll; DestDir: {app}; Flags: ignoreversion; Attribs: hidden system;
Source: Skin.vsf; DestDir: {app}; Flags: ignoreversion; Attribs: hidden system;
[Code]
#define A = (Defined UNICODE) ? "W" : "A"
procedure LoadVCLStyle(VClStyleFile: String); external 'LoadVCLStyle{#A}@{tmp}\VclStyles.dll stdcall delayload';
procedure UnLoadVCLStyles; external 'UnLoadVCLStyles@{tmp}\VclStyles.dll stdcall delayload';
function InitializeSetup(): Boolean;
begin
if not FileExists(ExpandConstant('{tmp}\VclStyles.dll')) then ExtractTemporaryFile('VclStyles.dll');
if not FileExists(ExpandConstant('{tmp}\Skin.vsf')) then ExtractTemporaryFile('Skin.vsf');
LoadVCLStyle(ExpandConstant('{tmp}\Skin.vsf'));
Result := True;
end;
procedure DeinitializeSetup();
begin
UnLoadVCLStyles;
end;
function InitializeUninstall(): Boolean;
begin
FileCopy(ExpandConstant('{app}\VclStyles.dll'), ExpandConstant('{tmp}\VclStyles.dll'), False);
FileCopy(ExpandConstant('{app}\Skin.vsf'), ExpandConstant('{tmp}\Skin.vsf'), False);
LoadVCLStyle(ExpandConstant('{tmp}\Skin.vsf'));
Result := True;
end;
procedure DeinitializeUninstall;
begin
UnLoadVCLStyles;
end;
sergey3695
25-12-2014, 10:13
Скрипт не рабочий. »
для Ansi. забыл :sorry:
ROMKA-1977
26-12-2014, 18:03
Подскажите возможно ли в инсталяторах Inno Setup (использую стандартную Ansi) на странице распаковки архивов вывести подробный список установки как в инсталяторах NSIS ?
http://rghost.ru/59987445/image.png
http://rghost.ru/59987465/image.png
Dodakaedr
26-12-2014, 20:09
ROMKA-1977, [Setup]
AppName=MyApp
AppVerName=MyApp
DefaultDirName={pf}\MyApp
[Files]
Source: "compiler:Languages\*"; DestDir: {app}; BeforeInstall: AddToMemo; Flags: nocompression recursesubdirs createallsubdirs
Source: "compiler:Examples\*"; DestDir: {app}; BeforeInstall: AddToMemo; Flags: nocompression recursesubdirs createallsubdirs
[Code]
var
FilesMemo: TNewMemo;
procedure AddToMemo();
var
AFile: String;
begin
AFile := ExpandConstant(CurrentFilename);
if ExtractFileExt(AFile) = '' then
FilesMemo.Lines.Add('CreateFolder: ' + RemoveBackslash(AFile))
else
FilesMemo.Lines.Add('Extract: ' + AFile);
end;
procedure InitializeWizard();
begin
FilesMemo := TNewMemo.Create(WizardForm);
FilesMemo.SetBounds(ScaleX(0), ScaleY(80), ScaleX(418), ScaleY(120));
FilesMemo.WordWrap := False;
FilesMemo.Parent := WizardForm.InstallingPage;
FilesMemo.ScrollBars := ssVertical;
FilesMemo.ReadOnly := True;
FilesMemo.Clear;
end;
ekspoint
27-12-2014, 00:09
[Code]
var
DetailsButton: TNewButton;
FilesMemo: TNewMemo;
Flag: Boolean;
procedure AddToMemo();
var
AFile: String;
begin
AFile:=ExpandConstant(CurrentFilename);
If ExtractFileExt(AFile)='' then
FilesMemo.Lines.Add('Копирование: '+RemoveBackslash(AFile)) else
FilesMemo.Lines.Add('Извлечение: '+AFile);
end;
procedure HideShow(Sender: TObject);
begin
If not Flag then begin
FilesMemo.Hide;
DetailsButton.Caption:='Детали';
Flag:=True;
end else begin
FilesMemo.Show;
DetailsButton.Caption:='Скрыть';
Flag:=False;
end;
end;
procedure InitializeWizard12();
begin
WizardForm.ProgressGauge.Top:=ScaleY(34);
FilesMemo:=TNewMemo.Create(WizardForm);
with FilesMemo do
begin
SetBounds(ScaleX(50), ScaleY(80), ScaleX(630), ScaleY(321));
Parent:=WizardForm.InstallingPage;
WordWrap:=True;
ScrollBars:=ssVertical;
ReadOnly:=True;
Visible:=false;
Clear;
end;
DetailsButton:=TNewButton.Create(WizardForm);
with DetailsButton do
begin
Parent:=WizardForm.InstallingPage;
Left := ScaleX(605);
Top := ScaleY(35);
Width := ScaleX(75);
Height := ScaleY(30);
Font.Size:=9;
Font.Style:= [fsItalic];
Caption:='Детали';
OnClick:=@HideShow
end;
Flag:=True;
end;
ROMKA-1977
27-12-2014, 10:30
Dodakaedr, ekspoint, код работает при упаковке средствами Inno Setup, а возможен ли вариант если упаковка в архивы (в моём случае архивы FreeArc + ISDone) ?
Подскажите пожалуйста, как сделать, чтобы приложение по умолчанию устанавливалось на диск C в Program Files.
Например, в этом случае, я так понимаю, установка будет происходить туда, куда укажет пользователь:
[Files]
Source: "D:\Games\Launcher\*"; DestDir: "{app}"; Flags: ignoreversion recursesubdirs createallsubdirs
Что поменять, чтоб установилось в Program Files по умолчанию? Может вместо "{app}" что то поменять? Или как? Подскажите пожалуйста :yes:
Irenis, Параметр DefaultDirName в секции Setup определяет каталог установки по умолчанию. Константа {pf} = ProgramFiles и ProgramFiles(x86) на 64-х разрядных системах.
DefaultDir={pf}\MyApp - создание папки приложения в корне папки ProgramFiles.
Если необходимо, чтобы программа всегда устанавливалась только в ProgramFiles, имеет смысл запретить пользователю выбор папки установки.
[Setup]
AppName=MyApp
AppVerName=MyApp
DefaultDirname={pf}\MyApp
;отключить страницу выбора папки.
DisableDirPage=yes
[Files]
Source: "D:\Games\Launcher\*"; DestDir: {app}; Flags: ignoreversion recursesubdirs createallsubdirs
Dodakaedr
28-12-2014, 17:45
Что поменять, чтоб установилось в Program Files по умолчанию? Может вместо "{app}" что то поменять? Или как? Подскажите пожалуйста »
Или же запретить изменять путь установки [Setup]
AppName=MyApp
AppVerName=MyApp
DefaultDirname={pf}\MyApp
[Files]
Source: "D:\Games\Launcher\*"; DestDir: {app}; Flags: ignoreversion recursesubdirs createallsubdirs
[Code]
procedure InitializeWizard();
begin
with WizardForm.DirEdit do
begin
Enabled := False;
end;
with WizardForm.DirBrowseButton do
begin
Enabled := False;
end;
end;
Спасибо :) Тут еще вот в чем дело. Игра состоит из лаунчера (который собственно и нужно было установить в Program Files), и из файлов самой игры. Так вот файлы эти должны устанавливаться в папку, которую укажет пользователь. В общем то разделить это все получилось и все устанавливается, куда надо. Единственное, что не так получается. На рабочем столе должен создаться ярлык, который запускает лаунчер, находящийся на диске С. Ярлык то создается, но находится файлик .exe не на диске С, а в папке с файлами игры и рабочая папка соответственно тоже та, в которую устанавливаются файлы игры. И ярлыком естественно ничего не запускается, так как он должен находиться на С. Вернее на диске С тоже есть этот .exe, но ярлык создается не из него. В общем ладно, сама уже запуталась, не знаю, как объяснить правильно :)
Решила в итоге не мудрить дальше, а поместить файлы игры и лаунчера в одну папку. Но вот думаю, будет ли это работать на виндовс 8. Просто это сам разработчик игры пишет, что лаунчер лучше устанавливать на диск С (особенно на виндовс 8). У меня виндовс 7, я этот лаунчер уже куда только не перемещала, все работает. А восьмерка никогда не стояла, вот и не знаю, отличаются ли они чем то существенно или нет. Но почему то кажется, если на семерке все работает, то и восьмерке должно работать?
Irenis
[Setup]
AppName=MyApp
AppVerName=MyApp
DefaultDirname={pf}\MyApp
[Files]
;лаунчер ставим в x:\Program Files, независимо от выбора папки пользователем
Source: "путь_к_лаунчеру"; DestDir: {pf}\папка программы; Flags: ignoreversion
;остальные файлы устанавливаем в папку по выбору пользователя
Source: "D:\Games\Launcher\*"; DestDir: {app}; Flags: ignoreversion recursesubdirs createallsubdirs
[Icons]
;создаем ярлык для лаунчера
Name: {group}\имя; Filename: {pf}\папка программы\файл; WorkingDir: {pf}\папка программы;
Name: {commondesktop}\имя; Filename: {pf}\папка программы\файл; WorkingDir: {pf}\папка программы;
будет ли это работать на виндовс 8 »
Разницы нет. Ну если только не считать индивидуальные глюки каждой новой системы за особенность.
Lex_from_Belarus
29-12-2014, 00:45
Подскажите пожалуйста может кто сталкивался, что при использовании UninsHs (анинсталлер с возможностью модифицирования, а не просто удаления), когда количество компонентов много, то запоминание выбранных не происходит, если выбрать несколько компонентов, то всё ОК. Может кто сталкивался и вылечил либо вооще альтернативный вариант знает?
не знаю, как объяснить правильно »
Есть игра которая отличается от обычной установки.
Одна часть представляет из себя большую часть файлов игры.
Вторая часть представляет из себя исполняющий файл Launcher.exe или исполняющий файл Launcher.exe и необходимые для его запуска компоненты.
Нужно, чтоб:
Одна часть установилась по умолчанию, т.е другими словами туда, куда укажет пользователь (в данном случае ярлык на рабочем столе не нужен).
Вторая часть была жёстко привязана к пути (путь примерной установки: "C:\Program Files\Launcher\"), затем на рабочем столе создавался ярлык для запуска Launcher.exe из этой же папки.
как сделать »
[Setup]
AppName=My Program
AppVersion=1.5
DefaultDirName={pf}\My Program
DefaultGroupName=My Program
OutputDir=.
[Tasks]
Name: desktopicon; Description: {cm:CreateDesktopIcon}; GroupDescription: {cm:AdditionalIcons}; Flags: unchecked
[Files]
Source: Game\Files\*; DestDir: {app}; Flags: ignoreversion recursesubdirs createallsubdirs
Source: Game\Launcher\Launcher.exe; DestDir: {pf}\Launcher; Flags: ignoreversion
[Icons]
Name: {group}\My Program; Filename: {pf}\Launcher\Launcher.exe
Name: {group}\{cm:UninstallProgram,My Program}; Filename: {uninstallexe}
Name: {commondesktop}\My Program; Filename: {pf}\Launcher\Launcher.exe; Tasks: desktopicon
[Run]
Filename: {app}\Launcher\Launcher.exe; Description: {cm:LaunchProgram,My Program}; Flags: nowait postinstall skipifsilent
[Setup]
AppName=My Program
AppVersion=1.5
DefaultDirName={pf}\My Program
DefaultGroupName=My Program
OutputDir=.
[Tasks]
Name: desktopicon; Description: {cm:CreateDesktopIcon}; GroupDescription: {cm:AdditionalIcons}; Flags: unchecked
[Files]
Source: Game\Files\*; DestDir: {app}; Flags: ignoreversion recursesubdirs createallsubdirs
Source: Game\Launcher\*; DestDir: {pf}\Launcher; Flags: ignoreversion recursesubdirs createallsubdirs
[Icons]
Name: {group}\My Program; Filename: {pf}\Launcher\Launcher.exe
Name: {group}\{cm:UninstallProgram,My Program}; Filename: {uninstallexe}
Name: {commondesktop}\My Program; Filename: {pf}\Launcher\Launcher.exe; Tasks: desktopicon
[Run]
Filename: {app}\Launcher\Launcher.exe; Description: {cm:LaunchProgram,My Program}; Flags: nowait postinstall skipifsilent
Юрій_Окропірідзе@vk
31-12-2014, 12:27
Здравствуйте. Как мне сделать такую же кнопку(info) в своем инсталляторе https://yadi.sk/i/sJ_2-at3divCk
сделать такую же кнопку(info) »
[Setup]
AppName=MyApp
AppVerName=MyApp
DefaultDirname={pf}\MyApp
[code]
procedure TButtonOnClick( Sender: TObject );
var
MainForm: TSetupForm;
begin
begin
MainForm := CreateCustomForm();
with MainForm do
try
BorderIcons := [];
ClientWidth := ScaleX( 300 );
ClientHeight := ScaleY( 300 );
Caption := 'Информация';
Position := poScreenCenter;
with TBevel.Create( nil ) do
begin
Parent := MainForm;
SetBounds( ScaleX( 8 ), ScaleY( 8 ), ScaleX( 284 ), ScaleY( 249 ) );
Shape := bsFrame;
end;
with TNewStaticText.Create( nil ) do
begin
Parent := MainForm;
SetBounds( ScaleX( 12 ), ScaleY( 12 ), ScaleX( 276 ), ScaleY( 241 ) );
AutoSize := False;
Caption := 'Информация:' + #13#10 +
'Версия:' + #13#10 +
'И т.д.';
WordWrap := True;
end;
with TButton.Create( nil ) do
begin
Parent := MainForm;
SetBounds( ScaleX( 112 ), ScaleY( 266 ), ScaleX( 76 ), ScaleY( 25 ) );
ModalResult := mrOk;
Caption := 'Закрыть';
end;
ShowModal();
finally
Free;
end;
end;
end;
procedure InitializeWizard();
begin
with TButton.Create( nil ) do
begin
Parent := WizardForm;
Left := ScaleX( 12 );
Top := ScaleY( 327 );
Caption := 'Info';
OnClick := @TButtonOnClick;
end;
end;
Юрій_Окропірідзе@vk
31-12-2014, 14:47
https://yadi.sk/i/vtpmpXtLdj2qU , тут вот какая то ошибка
© OSzone.net 2001-2012
vBulletin v3.6.4, Copyright ©2000-2025, Jelsoft Enterprises Ltd.
Available in ZeroNet 1osznRoVratMCN3bFoFpR2pSV5c9z6sTC