Войти

Показать полную графическую версию : Скрипты 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

Petruchodd
08-12-2010, 18:53
Люди хелп. Не знаю что делать. Сделал скрипт в котором в середине выполняется UninsHS.exe (пока его не всовывал) скрипт работал норм, он и сейчас работает хорошо. НО он не хочет заменять в папке установки старые файлы на новые :((( Подскажитееее пожалуйста, что можна сделать . Вот скрипт






[Setup]
AppID = asdf
AppName=asdf
AppVersion=1.55.1
AppPublisher=Company
DefaultDirName={pf}\asdf
DefaultGroupName=asdf
AllowNoIcons=yes
LicenseFile=C:\Peter work\instalation script\files for install\legal.txt
OutputBaseFilename=setup
Compression=lzma

SolidCompression=yes
UninstallDisplayIcon = {app}\asdf,0
UninstallDisplayName = Uninstall asdf

; For modify button in control panel
AppModifyPath ="{app}\asdf" /m0=asdf

[Languages]


[Components]


[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
Name: quicklaunchicon7; Description: {cm:CreateQuickLaunchIcon}; GroupDescription: {cm:AdditionalIcons}; Flags: unchecked; MinVersion: 0,6.1
[Files]

Source: "C:\Peter work\instalation script\files for install\icon.ico"; DestDir: "{app}"; Flags: ignoreversion
Source: "C:\Peter work\instalation script\files for install\legal.txt"; DestDir: "{app}"; Flags: ignoreversion
Source: "C:\Peter work\instalation script\files for install\UninsHs.exe"; DestDir: "{app}"; Flags: restartreplace
Source: "C:\Peter work\instalation script\files for install\play.jpg"; DestDir: "{app}"; Flags: restartreplace
Source: "C:\Peter work\instalation script\files for install\background.jpg"; DestDir: "{app}"; Flags: restartreplace
Source: "C:\Peter work\instalation script\files for install\asdf.exe"; DestDir: "{app}"; Flags: ignoreversion recursesubdirs createallsubdirs

[Dirs]
; Create folder for saving installation package
Name: "{userappdata}\$Inst$"; Attribs: hidden; Flags: uninsalwaysuninstall

[Icons]
Name: "{group}\asdf"; Filename: "{app}\asdf.exe"
Name: "{group}\{cm:UninstallProgram,asdf}"; Filename: "{uninstallexe}"
Name: "{commondesktop}\asdf"; Filename: "{app}\asdf.exe"; Tasks: desktopicon
Name: "{userappdata}\Microsoft\Internet Explorer\Quick Launch\asdf"; Filename: "{app}\asdf.exe";
Name: "{userappdata}\Microsoft\Internet Explorer\Quick Launch\User Pinned\TaskBar\asdf"; Filename: "{app}\asdf.exe"
Name: {group}\Uninstall asdf;Filename: "{app}\UninsHs.exe"; WorkingDir: "{app}"; Parameters: /u0=asdf

[InstallDelete]
Type: dirifempty; Name: "{userappdata}\$Inst$"

[Run]
; Register UninsHs to control panel
Filename: "{app}\UninsHS.exe"; Parameters: "/r0=asdf,{language},{srcexe},{userappdata}\$Inst$\setup.exe";WorkingDir: "{app}"; Flags: runhidden runminimized skipifdoesntexist
Filename: "{app}\asdf.exe"; Description: "{cm:LaunchProgram,asdf}"; Flags: nowait postinstall skipifsilent
[UninstallDelete]
; Delete the installation file

Type: files; Name: "{userappdata}\$Inst$\setup"

; Delete the installation folder

Type: dirifempty; Name: "{userappdata}\$Inst$"

[Code]
{For UninsHs; Skip some wizard page when repair}
function ShouldSkipPage(CurPage: Integer): Boolean;
begin
if Pos('/SP-', UpperCase(GetCmdTail)) > 0 then
case CurPage of
wpLicense, wpPassword, wpInfoBefore,
//UserPage.Id,
wpUserInfo, wpSelectDir, wpSelectProgramGroup, wpInfoAfter:
Result := True;
end;
end;

function NextButtonClick(CurPage: Integer): Boolean;
var
sz:Integer;
s:string;
count:integer;
ErrorCode:integer;
ResultCode:integer;
res:integer;
begin
Result:=True;
count:=0;
If CurPage=wpSelectDir then

begin

if FileExists(ExpandConstant('{app}\UninsHS.exe')) and (count=0) then
begin

ShellExec('', ExpandConstant('{app}\UninsHS.exe'), '/u0=asdf', '', SW_SHOW, ewNoWait, ErrorCode);
Exec('taskkill', '/f /im setup.tmp', '', SW_Hide, ewNoWait, ErrorCode);
// Exec(ExpandConstant('{app}\UninsHS.exe'), ' /u0=asdf',ExpandConstant('{app}'),SW_SHOW,ewWaitUntilTerminated,res);



//
count:=1;

Result := False;
end ;


end;
end;


end .

ну не ужели никто не может помочь ? подсказать - почему файлы после переустановки не обновляються (

death7lord
09-12-2010, 01:25
ровно два дня сижу в инете и пытаюсь разобраться в скриптах по распаковке arc.... но каждый раз возникает какая-нибудь синтаксическая или иная ошибка....
можете показать самый наипростейший пример скрипка по распаковке arc архивов (вернее даже кусок кода)
бары и прочие красивости не интересуют, главное что бы архивы arc распаковывал сам inno setup, а не через батник....
спасибо заранее

p.s.может ли ещё всё зависеть от версии компилятора? обычный с кряком и китайский расширенный работают одинаково
_____________________________
уже сам разобрался с arc-extrator, когда архивы лежат на исходном диске в корне

Imitri7
11-12-2010, 18:25
death7lord, юзай IsDone
---------------------------------------------------------------------------------------------------------------------
кто знает помогите пожалуйста, как сделать так:
http://i053.radikal.ru/1011/63/462657e83abc.gif
Чтобы при нажатии менялась форма инстала?
+1 ну или хотяб покажите как реализовать смену формы инстлала по клику на чекбокс(как добавить чекбокс знаю)

serg aka lain
11-12-2010, 20:11
+1 ну или хотяб покажите как реализовать смену формы инстлала по клику на чекбокс(как добавить чекбокс знаю) »
Для этого надо будет писать очень много кода (описание стандартной формы и расположение на ней элементов, и описание новой формы с новым расположением этих элементов),
если готов потрудиться, то вот ->


[Setup]
AppName=My Program
AppVerName=My Program
DefaultDirName={pf}\My Program
OutputDir=.

[Code]
var
MyCheck: TCheckBox;

procedure StandartForm();
begin
{ описание стандартного расположения элементов WizardForm }
with WizardForm do
begin
ClientWidth := ScaleX(497);
ClientHeight := ScaleY(360);
Center;
end;
end;

procedure MyNewForm();
begin
{ описание нового расположения элементов WizardForm }
with WizardForm do
begin
ClientWidth := ScaleX(700);
ClientHeight := ScaleY(500);
Center;
end;
end;

procedure GetWizardForm(Sender: TObject);
begin
if MyCheck.Checked then
MyNewForm()
else
StandartForm();
end;

procedure InitializeWizard();
begin
MyCheck := TCheckBox.Create(WizardForm);
with MyCheck do
begin
SetBounds(5, 330, 100, 13);
Caption := 'Сменить размер';
OnClick := @GetWizardForm;
Parent := WizardForm;
end;
end;

Imitri7
11-12-2010, 22:45
serg aka lain, можешь еще пример показать чтоб чекбокс с надписью в другое место перемещались?
+ как на определенной странице сделать(сори за нубство, никогда сам не писал код)

serg aka lain
11-12-2010, 23:58
можешь еще пример показать чтоб чекбокс с надписью в другое место перемещались?
+ как на определенной странице сделать(сори за нубство, никогда сам не писал код) »
Если подразумевается окно распаковки файлов, то я сделал бы так ->

[Setup]
AppName=My Program
AppVerName=My Program
DefaultDirName={pf}\My Program
OutputDir=.

[Files]
Source: {sys}\*.dll; DestDir: {app}; Flags: external deleteafterinstall;

[Code]
var
MyCheck: TCheckBox;

procedure StandartForm();
begin
with WizardForm do
begin
ClientWidth := ScaleX(497);
ClientHeight := ScaleY(360);
Center;
Bevel.Show;
Bevel1.Show;
MainPanel.Show;
with InnerNotebook do
begin
Left := ScaleX(40);
Top := ScaleY(72);
Width := ScaleX(417);
end;
with StatusLabel do
Width := ScaleX(417);

with FileNameLabel do
begin
ScaleY(16);
Width := ScaleX(417);
end;
with ProgressGauge do
begin
Top := ScaleY(42);
Width := ScaleX(417);
end;
with CancelButton do
begin
Left := ScaleX(412);
Top := ScaleY(327);
end;
end;
with MyCheck do
Top := ScaleY(330);
end;

procedure MyNewForm();
begin
with WizardForm do
begin
ClientWidth := ScaleX(395);
ClientHeight := ScaleY(120);
Center;
Bevel.Hide;
Bevel1.Hide;
MainPanel.Hide;
with InnerNotebook do
begin
Left := ScaleX(10);
Top := ScaleY(10);
Width := WizardForm.ClientWidth - ScaleX(20);
end;
with StatusLabel do
Width := InnerNotebook.Width;

with FileNameLabel do
begin
Top := ScaleY(20);
Width := InnerNotebook.Width;
end;
with ProgressGauge do
begin
Top := ScaleY(40);
Width := InnerNotebook.Width;
end;
with CancelButton do
begin
Left := WizardForm.ClientWidth div 2 - CancelButton.Width div 2;
Top := WizardForm.ClientHeight - CancelButton.Height - ScaleY(10);
BringToFront;
end;
end;
with MyCheck do
Top := WizardForm.CancelButton.Top;
end;

procedure GetWizardForm(Sender: TObject);
begin
if MyCheck.Checked then
MyNewForm()
else
StandartForm();
end;

procedure InitializeWizard();
begin
MyCheck := TCheckBox.Create(WizardForm);
with MyCheck do
begin
Left := ScaleX(10);
Top := ScaleY(330);
Width := ScaleX(150);
Caption := 'Компактный размер';
OnClick := @GetWizardForm;
Parent := WizardForm;
end;
end;

procedure CurPageChanged(CurPageID: Integer);
begin
MyCheck.Hide;
if CurPageID = wpInstalling then
MyCheck.Show;
end;

procedure CurStepChanged(CurStep: TSetupStep);
begin
if CurStep = ssPostInstall then
MyCheck.Checked := False;
end;

з.ы. Требуется тестирование, для выявления возможных глюков.

Imitri7
12-12-2010, 00:29
serg aka lain, спасибо большое, глюков вроде нет, пока не заметил

Imitri7
12-12-2010, 11:20
serg aka lain, в инно можно как нибудь границы окна убрать, а кнопку свернуть и закрыть сделать картинками?

serg aka lain
12-12-2010, 18:03
в инно можно как нибудь границы окна убрать »
Имеется в виду это

procedure InitializeWizard();
begin
WizardForm.BorderStyle := bsNone;
end;

Vamp1re
12-12-2010, 22:08
Нужен inno setup скрипт для распаковки архивов winrar

Нужен inno setup скрипт для распаковки архивов winrar

Photon9
12-12-2010, 22:39
Хм, севодня копался с пересборкой одной игрушки, по ходу возникло два вопроса:

1. В свойствах ярлыка есть значение Рабочая папка, каким образом в скрипте прописать его?
2. Как прикрутить через скрипт установки программы, установку дополнительных компонентов, например Games for Windows Live, C++, DX и т.д. , желательно с возможностью выбора ставить или нет.

Habetdin
12-12-2010, 22:43
Photon9, Рабочая папка »
[Icons]
Name: {group}\FREE Music Downloader Studio; Filename: {app}\FMD Studio.exe; WorkingDir: {app}
[hr]установку дополнительных компонентов »
Пример (http://forum.oszone.net/post-1276509-438.html)

TERRAN
12-12-2010, 23:18
Здравствуйте!)
Не получается у меня добавить несколько архивов FreeArc (arc+srep+precomp+7.z) в скрипт Need for Speed™ Undercover [2.4a] +ISDone, первый без проблем распаковывается, а следующие вообще не подхватывает. Можно ли, что-нибудь сделать или нет?

ChVL
13-12-2010, 10:36
Есть ли в Inno идентификатор установленной системы (подобно IsWin64)?
Надо разделить запуск файлов для Win7 и не для Win7:

[Run]
Filename: {app}\file_WinXP.exe; Check: "not IsWin7";
Filename: {app}\file_Win7.exe; Check: "IsWin7";

R.i.m.s.k.y.
13-12-2010, 10:48
Есть ли в Inno идентификатор установленной системы (подобно IsWin64)?
Надо разделить запуск файлов для Win7 и не для Win7: »

[_Code]
Function Win7():boolean;
var Version: TWindowsVersion;
begin
GetWindowsVersionEx (Version);
if (Version.Major = 6) and (Version.Minor = 1) then Result := true else Result := False;
end;

Вин7 - 6,1
Виста - 6,0
ХР - 5,1

Habetdin
13-12-2010, 13:58
ChVL, [Run]
Filename: {app}\file_WinXP.exe; Check: "not IsWin7";
Filename: {app}\file_Win7.exe; Check: "IsWin7"; »
[Run]
; "ниже" Win7
Filename: {app}\file_WinXP.exe; OnlyBelowVersion: 0,6.1;
; Win7 и "выше"
Filename: {app}\file_Win7.exe; MinVersion: 0,6.1;
R.i.m.s.k.y., зачем через [code]? ;)

Imitri7
13-12-2010, 14:02
serg aka lain, procedure InitializeWizard();
begin
MyCheck := TCheckBox.Create(WizardForm);
with MyCheck do
begin
Left := ScaleX(10);
Top := ScaleY(330);
Width := ScaleX(150);
Caption := 'Компактный размер';
OnClick := @GetWizardForm;
Parent := WizardForm;
end;
end;

как здесь цвет " Caption := 'Компактный размер';" прописать?
если тупо добавить Font.Color .то не работает, а если просто Color то цвет у области этой надписи меняется

R.i.m.s.k.y.
13-12-2010, 14:03
R.i.m.s.k.y., зачем через [code] »
Прописывал - не сработало почему то. Пришлось самому делать. И к тому же MinVersion и OnlyBelowVersion не во всех секциях можно прописать, а такая функция работает везде.

Vamp1re
13-12-2010, 14:52
Помогите как вместо распаковки архивов ARC поставить на MZ.Помогите!!! оОчень надо!!!

2. Как прикрутить через скрипт установки программы, установку дополнительных компонентов, например Games for Windows Live, C++, DX и т.д. , желательно с возможностью выбора ставить или нет. »
[Run]
Filename: "{src}\НАЗВАНИЕ ПАПКИ\НАЗВАНИЕ ФАЙЛА.exe"; WorkingDir: "{src}\ПАПКА"; Parameters: "/silent"; Check: ПАПКА; Flags: waituntilterminated; BeforeInstall: НАЗВАНИЕ ФАЙЛАProgress;

все файлы закинуть в папку с инсталятором

Помогите как вместо распаковки архивов ARC поставить на MZ.Помогите!!! оОчень надо!!!

nik1967
13-12-2010, 16:15
Imitri7,
Так просто изменить цвет лебела, я думаю, не получиться. Только созданием нового лебела:
[Setup]
AppName=My Program
AppVerName=My Program
DefaultDirName={pf}\My Program
OutputDir=.

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

[Files]
Source: {sys}\*.dll; DestDir: {app}; Flags: external deleteafterinstall;

[_code]
function GetSystemMetrics(nIndex: Integer): Integer;
external 'GetSystemMetrics@user32.dll stdcall';

var
MyCheck: TCheckBox;
MyCheckLabel: TLabel;

procedure MyCheckOnClick(Sender: TObject);
begin
if MyCheck.Checked = False then
MyCheck.Checked:= True else
MyCheck.Checked:= False;
end;

procedure StandartForm();
begin
with WizardForm do
begin
ClientWidth := ScaleX(497);
ClientHeight := ScaleY(360);
Center;
Bevel.Show;
Bevel1.Show;
MainPanel.Show;
with InnerNotebook do
begin
Left := ScaleX(40);
Top := ScaleY(72);
Width := ScaleX(417);
end;
with StatusLabel do
Width := ScaleX(417);
with FileNameLabel do
begin
ScaleY(16);
Width := ScaleX(417);
end;
with ProgressGauge do
begin
Top := ScaleY(42);
Width := ScaleX(417);
end;
with CancelButton do
begin
Left := ScaleX(412);
Top := ScaleY(327);
end;
end;
with MyCheck do
Top := ScaleY(330);
with MyCheckLabel do begin
Top := ScaleY(332);
Left := ScaleX(30);
Parent:= WizardForm;
end;
end;

procedure MyNewForm();
begin
with WizardForm do
begin
ClientWidth := ScaleX(395);
ClientHeight := ScaleY(120);
Left := GetSystemMetrics(16) - ClientWidth - ScaleX(8);
Top := GetSystemMetrics(17) - ClientHeight - ScaleY(8);
Bevel.Hide;
Bevel1.Hide;
MainPanel.Hide;
with InnerNotebook do
begin
Left := ScaleX(10);
Top := ScaleY(10);
Width := WizardForm.ClientWidth - ScaleX(20);
end;
with StatusLabel do
Width := InnerNotebook.Width;

with FileNameLabel do
begin
Top := ScaleY(20);
Width := InnerNotebook.Width;
end;
with ProgressGauge do
begin
Top := ScaleY(40);
Width := InnerNotebook.Width;
end;
with CancelButton do
begin
Left := WizardForm.ClientWidth div 2 - CancelButton.Width div 2;
Top := WizardForm.ClientHeight - CancelButton.Height - ScaleY(10);
BringToFront;
end;
end;
with MyCheck do
Top := WizardForm.CancelButton.Top;
with MyCheckLabel do begin
Top := WizardForm.CancelButton.Top -8;
Left := ScaleX(20);
Parent:= WizardForm.InstallingPage;
end;
end;

procedure GetWizardForm(Sender: TObject);
begin
if MyCheck.Checked then
MyNewForm()
else
StandartForm();
end;

procedure InitializeWizard();
begin
MyCheck := TCheckBox.Create(WizardForm);
with MyCheck do
begin
Left := ScaleX(10);
Top := ScaleY(330);
Width := ScaleX(15);
OnClick := @GetWizardForm;
Parent := WizardForm;
end;
MyCheckLabel := TLabel.Create(WizardForm);
with MyCheckLabel do begin
AutoSize:=False;
Left := ScaleX(30);
Top := ScaleY(332);
Width := ScaleX(150);
Transparent:=True;
//Font.Name:= 'Tahoma'
//Font.Size:= 8;
Font.Color:=clRed;
Caption := 'Компактный размер';
Parent := Wizardform;
OnClick:= @MyCheckOnClick;
end;
end;

procedure CurPageChanged(CurPageID: Integer);
begin
MyCheck.Hide;
MyCheckLabel.Hide;
if CurPageID = wpInstalling then begin
MyCheck.Show;
MyCheckLabel.Show;
end;
end;

procedure CurStepChanged(CurStep: TSetupStep);
begin
if CurStep = ssPostInstall then
MyCheck.Checked := False;
end;




© OSzone.net 2001-2012