Показать полную графическую версию : [архив] Скрипты Inno Setup. Помощь и советы [часть 2]
всем привет. скажите как сделать примерно такой autorun чтобы в нём было для установки 3 игры?
http://http://img687.imageshack.us/img687/9443/20100411181441.png
http://img687.imageshack.us/img687/9443/20100411181441.png
всем привет. скажите как сделать примерно такой autorun чтобы в нём было для установки 3 игры?
http://img687.imageshack.us/img687/9...0411181441.png »
AutoPlay Media Studio - я этим пользуюсь =), думаю если постараться то можно сделать и такой как на рисунке
alex2010
20-08-2010, 22:24
tema47, AutoPlay Media Studio тебе в помощь
alex2010 moov1kk
спасибо.
А как сделать чтобы скрипт для Need for Speed™ Undercover.iss v 2.2 работал без авторуна,
сразу установку запускал?
alex2010
20-08-2010, 22:53
Самый простой способ отключения Авторана (ничего не удаляя) это
Код:
function InitializeSetup(): Boolean;
begin
ExtractTemporaryFile('Tiger.cjstyles');
LoadSkin(ExpandConstant('{tmp}\Tiger.cjstyles'), '');
Result := AutoRunExec;
end;
заменить Result := AutoRunExec на Result := True.
цитата с ру-боард
спасибо большое, я уж замучился искать.
маркузяка
21-08-2010, 14:35
как сделать чтобы при запуске через секцию [Run] этот архив сам распаковывался, т.е. не выдавая сообщения http://s52.radikal.ru/i136/1008/95/ab608acceff3.jpg
сам распаковывался? я конечно понимаю что можно было просто распаковать архив и включить файлы в секцию [Files], но на будущее все такие есть такая возможность?
З.Ы. архив самораспаковывающийся, сделан в 7-Zip, предлагает распаковаться в ту папку, в которой сам сейчас находится.
З.З.Ы. и чтобы не выдавал сообщение о замене файла а сам заменял. возможно ли это?
Habetdin
21-08-2010, 20:20
маркузяка, судя по скрину это оригинальный sfx 7-zip'а.
[Run]
Filename: archive.exe; Parameters: -y; WorkingDir: {app}; StatusMsg: Распаковка файлов...; Flags: waituntilidle runhidden
Укажите куда распаковать файлы в WorkingDir, вместо {app} :)
Dima2009
22-08-2010, 21:04
Всем привет! если не трудно напишите скрипт - нужно упаковать папку с файлами чтобы распаковка выглядела вот так.
http://s59.radikal.ru/i166/1008/ae/f94c92a29da4.jpg
http://s005.radikal.ru/i212/1008/be/e7c213269036.jpg
http://s002.radikal.ru/i199/1008/a0/7c340214b7fb.jpg
При нажатии на кнопку (отмена) происходит откат.
маркузяка
22-08-2010, 21:21
а что именно интересует? процент распаковки а размер текущего файла?
маркузяка
22-08-2010, 22:34
вот, нужно только название проги, версию, нужные файлы (папки) и иконки сделать
[Setup]
AppName=имя программы
AppVersion=1.5
AppVerName=имя программы 1.5
AppPublisher=издатель, Inc.
DefaultDirName={pf}\имя программы
DefaultGroupName=имя программы
AllowNoIcons=yes
OutputDir=C:\Users\Admin\Desktop
OutputBaseFilename=setup
Compression=lzma
SolidCompression=yes
[Languages]
Name: "russian"; MessagesFile: "compiler:Languages\Russian.isl"
[Tasks]
Name: "desktopicon"; Description: "{cm:CreateDesktopIcon}"; GroupDescription: "{cm:AdditionalIcons}"; Flags: unchecked
Name: "quicklaunchicon"; Description: "{cm:CreateQuickLaunchIcon}"; GroupDescription: "{cm:AdditionalIcons}"; Flags: unchecked; OnlyBelowVersion: 0,6.1
[Files]
Source: file1.abc; DestDir: "{app}"; Flags: ignoreversion; AfterInstall: Progress()
Source: file2.abc; DestDir: "{app}"; Flags: ignoreversion; AfterInstall: Progress()
Source: file3.abc; DestDir: "{app}"; Flags: ignoreversion; AfterInstall: Progress()
; NOTE: Don't use "Flags: ignoreversion" on any shared system files
[Code]
var
ProgressLabel, SizeLabel: TLabel;
procedure Progress();
var
size: integer;
begin
with WizardForm.ProgressGauge do
ProgressLabel.Caption:= IntToStr((Position-Min)/((Max - Min)/100)) + '%';
FileSize(ExpandConstant(CurrentFileName), size);
SizeLabel.Caption:= IntToStr(size) + ' bytes';
end;
procedure InitializeWizard();
begin
ProgressLabel := TLabel.Create(WizardForm);
with WizardForm.ProgressGauge do
begin
ProgressLabel.Top := Top + Height + ScaleY(8);
ProgressLabel.Left:= Left + Width/2 - ScaleX(8);
ProgressLabel.AutoSize := True;
ProgressLabel.Parent := WizardForm.InstallingPage;
end;
SizeLabel := TLabel.Create(WizardForm);
with WizardForm.ProgressGauge do
begin
SizeLabel.Top := Top + Height + ScaleY(8);
SizeLabel.Left:= Left;
SizeLabel.AutoSize := True;
SizeLabel.Parent := WizardForm.InstallingPage;
end;
end;
R.i.m.s.k.y.
23-08-2010, 09:25
накидал вам пример, как это делается »
мааленький минус в этом скрипте - у MPC есть подкомпонента (аппаратное воспроизведение DXVA)
при "щелканье" на эту подкомпонету выбирается и MPC и она, но флаг "регить на MPC" остается засвеченным.
Решил так:
{ в зависимости от того на кого кликнули, производим действия }
if WizardForm.ComponentsList.Checked[kmp] then WizardForm.ComponentsList.ItemEnabled[kReg]:=True else WizardForm.ComponentsList.ItemEnabled[kReg]:=False;
if WizardForm.ComponentsList.Checked[mpc] then WizardForm.ComponentsList.ItemEnabled[mReg]:=True else WizardForm.ComponentsList.ItemEnabled[mReg]:=False;
//if WizardForm.ComponentsList.Checked[gom] then WizardForm.ComponentsList.ItemEnabled[gReg]:=True else WizardForm.ComponentsList.ItemEnabled[gReg]:=False;
case WizardForm.ComponentsList.ItemIndex of
kmp: ; mpc: ; //gom: ;
else Correct := False;
end;
Вот еще нашел простой пример (который искал давно и он оказался в шапке - примеры скриптов Inno, скачал их но искал невнимательно, файл SelComp-EnableGroup.iss)
[Setup]
AppName=My Program
AppVerName=My Program version 1.5
DefaultDirName={pf}\My Program
[Components]
Name: A; Description: Группа А
Name: A\A1; Description: Компонент 1
Name: A\A2; Description: Компонент 2
Name: B; Description: Группа B
Name: B\B1; Description: Группа B1
Name: B\B1\B11; Description: Компонент 1; Flags: exclusive
Name: B\B1\B22; Description: Компонент 2; Flags: exclusive
[Files]
Source: compiler:Examples\MyProg.exe; DestDir: {app}; Check: Check1
Source: compiler:Examples\MyProg.chm; DestDir: {app}; Check: Check2
[_Code]
function Check1: Boolean;
begin
Result:=WizardForm.ComponentsList.ItemEnabled[5] and WizardForm.ComponentsList.Checked[5]
end;
function Check2: Boolean;
begin
Result:=WizardForm.ComponentsList.ItemEnabled[6] and WizardForm.ComponentsList.Checked[6]
end;
procedure OnClickCheck(Sender: TObject);
begin
if WizardForm.ComponentsList.Checked[2] = True then
begin
WizardForm.ComponentsList.ItemEnabled[4]:=True
WizardForm.ComponentsList.ItemEnabled[5]:=True
WizardForm.ComponentsList.ItemEnabled[6]:=True
end else
begin
WizardForm.ComponentsList.ItemEnabled[4]:=False
WizardForm.ComponentsList.ItemEnabled[5]:=False
WizardForm.ComponentsList.ItemEnabled[6]:=False
end
end;
procedure InitializeWizard();
begin
WizardForm.ComponentsList.Checked[2]:=True
WizardForm.ComponentsList.Checked[4]:=True
WizardForm.ComponentsList.OnClickCheck:=@OnClickCheck
end;
Dima2009
23-08-2010, 09:45
маркузяка Спасибо!
А как прикрутить ссылку на сайт.
http://s52.radikal.ru/i136/1008/86/698635646be7.jpg
Habetdin
23-08-2010, 15:08
Dima2009, [Code]
var
MouseLabel,SiteLabel: TLabel;
procedure SiteLabelOnClick(Sender: TObject);
var
ErrorCode: Integer;
begin
ShellExec('open', 'http://forum.oszone.net/member.php?u=47933', '', '', SW_SHOWNORMAL, ewNoWait, ErrorCode)
end;
procedure SiteLabelMouseDown(Sender: TObject; Button: TMouseButton; Shift: TShiftState; X, Y: Integer);
begin
SiteLabel.Font.Color:=$0000C8FF
end;
procedure SiteLabelMouseUp(Sender: TObject; Button: TMouseButton; Shift: TShiftState; X, Y: Integer);
begin
SiteLabel.Font.Color:=$000080FF
end;
procedure SiteLabelMouseMove(Sender: TObject; Shift: TShiftState; X, Y: Integer);
begin
SiteLabel.Font.Color:=$0000A0FF
end;
procedure SiteLabelMouseMove2(Sender: TObject; Shift: TShiftState; X, Y: Integer);
begin
SiteLabel.Font.Color:=$000080FF
end;
procedure CurPageChanged(CurPageID: Integer);
begin
MouseLabel:=TLabel.Create(WizardForm)
MouseLabel.Width:=WizardForm.Width
MouseLabel.Height:=WizardForm.Height
MouseLabel.Autosize:=False
MouseLabel.Transparent:=True
MouseLabel.OnMouseMove:=@SiteLabelMouseMove2
MouseLabel.Parent:=WizardForm
SiteLabel:=TLabel.Create(WizardForm)
SiteLabel.Left:=10
SiteLabel.Top:=330
SiteLabel.Cursor:=crHand
SiteLabel.Font.Color:=$000080FF
SiteLabel.Caption:='Copyright © 2006-2009 ProkaZZZa'
SiteLabel.OnClick:=@SiteLabelOnClick
SiteLabel.OnMouseDown:=@SiteLabelMouseDown
SiteLabel.OnMouseUp:=@SiteLabelMouseUp
SiteLabel.OnMouseMove:=@SiteLabelMouseMove
SiteLabel.Parent:=WizardForm
end;
Здравствуйте!
Помогите, пожалуйста. После установки аппликухи в Add/Remove Programs отображается неверный размер приложения. Не то, чтоб чуть-чуть неверный, а совсем. Ну т.е. в реальности 200 метров, а в списке 7 Гиг. Смею предположить, что размер где-то прописывается в реестрах при установке. Удалось найти только, что за регистрацию приложений в системе отвечает appmgmts.dll, но каким образом система получает размер файлов - не ясно. Может кто знает в чем может быть причина?
В сетап зашито много мелких файлов, при инсталляции нужно выбирать из списка. Может в этом месте что-то сбивается? Максимум - 10 000 файлов, общим объемом не более 1, 5 Гб. Полученный setup.exe записывается на CD, т.е. не более 700 метров. Вообще, это сетап-скрипт рассказывает системе о приложении?
маркузяка
24-08-2010, 13:24
Habetdin, а выозможно ли что то подобное при распаковке rar sfx архива созданного в winrar?
R.i.m.s.k.y.
24-08-2010, 14:07
Для лучшего сжатия попробуйте добавить флаги:
sortfilesbyextension sortfilesbyname
не помогло, стало толще
Habetdin
24-08-2010, 15:12
маркузяка, типы инсталляторов (http://www.oszone.net/2766). Для WinRAR SFX ключ тихой распаковки -s (подробнее в справке WinRAR)
Dima2009
24-08-2010, 16:53
Подскажите как добавить окно чтобы в нем отображался список распаковываемых файлов...
http://s05.radikal.ru/i178/1008/81/29fb1da29360.png
Здравствуйте.Возможно ли изменить путь в реестре, который создаётся для программы дабы та отображалась в УСТ\УДаление программ.Т.е HKLM\Software\Microsoft\Windows\CurrentVersion\Uninstall создается запись HKLM\Software\Microsoft\Windows\CurrentVersion\Uninstall\MyProg_is1 можно ли изменить её на HKLM\...\Uninstall\MyProg.
Да, Большое спасибо.
© OSzone.net 2001-2012
vBulletin v3.6.4, Copyright ©2000-2025, Jelsoft Enterprises Ltd.