Войти

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


Страниц : 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

postalok
22-11-2009, 00:17
Помогите пожалуйста! Не могу создать инсталлятор больше 2 гб! У меня папка 7гб, компилирую инсталлятор. Пишет что неляза там больше 2гб создать =(

Habetdin
22-11-2009, 00:25
postalok, делите на части..
[Setup]
DiskSpanning=true

Serega
22-11-2009, 00:26
Не могу создать инсталлятор больше 2 гб! У меня папка 7гб, компилирую инсталлятор. Пишет что неляза там больше 2гб создать »
Используйте DiskSpanning

[Setup]: DiskSpanning
Возможные значения: yes or no
Значение по умолчанию: no
Опмсание:

При значении yes будет производиться разбиение на диски. Определяет, создавать ли компилятору один файл SETUP.EXE, или делить его на файлы, которые помещаются на дискету, CD-ROM, DVD-ROM или другой носитель. Каждый файл в своем имени будет содержать номер, по которому можно будет определить на какой диск его следует скопировать. Скопируйте SETUP.EXE и SETUP-1.BIN на первый диск, SETUP-2.BIN на второй и т. д.

В этом случае размер каждого файла и число файлов, создаваемых для каждого диска диктуется директивой DiskSliceSize и SlicesPerDisk секции [Setup]. Другие директивы, отвечающие за разбиение на диски, которые вы захотите внедрить, должны включать директивы DiskClusterSize и ReserveBytes.

Обратите внимание, что нужно обязательно задать этим директивам значение yes, если размер сжатого файла инсталлятора превышает 2,100,000,000 байт, даже если вы не планируете разбивать инсталлятор на диски. (Инсталлятор будет работать правильно, даже если все SETUP-*.BIN файлы будут размещены на одном диске).


Упс... уже ответил Habetdin

Serega
22-11-2009, 03:03
Berline, вы как-то спрашивали про выделение компонентов отдельными кнопками.
На тот момент, правильного решения я не нашёл, а оно было рядом...


; выделение или снятие отметки со всех компонентов одной кнопкой...
; Автор: Serega, http://forum.oszone.net/member.php?userid=88670

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

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

[Types]
Name: full; Description: Полная установка
Name: custom; Description: Выборочная установка; Flags: iscustom

[Components]
Name: a; Description: Моя программа™; Types: full custom
Name: a\a; Description: Руководство пользователя; Types: full
Name: a\a\a; Description: Русский; Flags: exclusive
Name: a\a\b; Description: English; Flags: exclusive
Name: a\b; Description: Справка; Types: full

[Files]
Source: compiler:Examples\MyProg.exe; DestDir: {app}; Components: a
Source: compiler:Examples\Readme-ru.txt; DestDir: {app}; Components: a\a\a
Source: compiler:Examples\Readme-en.txt; DestDir: {app}; Components: a\a\b
Source: compiler:Examples\MyProg.chm; DestDir: {app}; Components: a\b

[Code]
var
i, k, count: Integer;

procedure btnClick(Sender: TObject);
begin
count:= WizardForm.ComponentsList.Items.Count-1;
for i:= count downto 0 do
begin
case TButton(Sender).Tag of
0: WizardForm.ComponentsList.Checked[i]:= True;
1: WizardForm.ComponentsList.Checked[i]:= False;
end;
WizardForm.ComponentsList.OnClickCheck(WizardForm.ComponentsList.ItemObject[i]);
end;
end;

procedure InitializeWizard();
begin
for i:= 0 to 1 do
with TButton.Create(WizardForm) do
begin
SetBounds(295+k,210,60,25);
OnClick:= @btnClick;
Parent:= WizardForm.SelectComponentsPage;
Tag:= i;
case i of
0: Caption:= 'Все';
1: Caption:= 'Ничего';
end;
k:= 62;
end;
end;

Zolotnik
22-11-2009, 13:43
Вопрос такой:

Можно ли связать [Components] и [Types] с кодом определения свободного места на диске. дело в том, что в зависимости от выбраного диска должны вноситься разные записи реестра (пути соответствующие выбраному диску).
тоесть дополнительно к вариантам выбора установки и дополнительным компонентам. может как то через секцию [Tasks]?
Спасибо.

Serega
22-11-2009, 14:36
Можно ли связать [Components] и [Types] с кодом определения свободного места на диске »
Не совсем понятен вопрос, разясните поподробней.
что в зависимости от выбраного диска должны вноситься разные записи реестра (пути соответствующие выбраному диску). »
При использовании коонстант пути и так будут в соответствии с выборанным диском, т.е. если использовать константу {app}, пример:

[Registry]
Root: HKLM; Subkey: Software\My Company\My Program; ValueType: string; ValueName: InstallPath; ValueData: {app}

{app} вернёт полный путь, куда устанавливается приложение.
Весь список возможных констант, можете посмотреть в Справке (есть ссылка в шапке темы), раздел Константы.

Zolotnik
22-11-2009, 15:27
тоесть, если я вместо ValueData: D:\My Program\xxxx сделаю ValueData:{app}\xxxx то все будет так как надо?

тогда этот вопрос снимается как бесполезный:
Можно ли связать [Components] и [Types] с кодом определения свободного места на диске.

Спасибо Вам.

еще просьба: где то видел такой код, который скрывает типы установки, оставляя для выбора только компоненты. щас немогу найти.

Serega
22-11-2009, 16:12
тоесть, если я вместо ValueData: D:\My Program\xxxx сделаю ValueData:{app}\xxxx то все будет так как надо? »
Немного уточню,

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

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

[Registry]
Root: HKLM; Subkey: Software\My Company\My Program; ValueType: string; ValueName: InstallPath; ValueData: {app}

{app} будет означать C:\Program Files\My Program (если С системный диск).

где то видел такой код, который скрывает типы установки, оставляя для выбора только компоненты. щас немогу найти. »

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

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

[Types]
Name: full; Description: Полная установка
Name: custom; Description: Выборочная установка; Flags: iscustom

[Components]
Name: a; Description: Моя программа™; Types: full custom
Name: a\a; Description: Руководство пользователя; Types: full
Name: a\a\a; Description: Русский; Flags: exclusive
Name: a\a\b; Description: English; Flags: exclusive
Name: a\b; Description: Справка; Types: full

[Files]
Source: compiler:Examples\MyProg.exe; DestDir: {app}; Components: a
Source: compiler:Examples\Readme-ru.txt; DestDir: {app}; Components: a\a\a
Source: compiler:Examples\Readme-en.txt; DestDir: {app}; Components: a\a\b
Source: compiler:Examples\MyProg.chm; DestDir: {app}; Components: a\b

[Code]
procedure InitializeWizard();
begin
// скрываем TypesCombo
WizardForm.TypesCombo.Hide;
// чтоб смотрелось лучше, поднимаем выше и увеличиваем окно компонентов ComponentsList
WizardForm.ComponentsList.Top:= WizardForm.TypesCombo.Top;
WizardForm.ComponentsList.Height:= 160;
end;

Colapse
22-11-2009, 17:24
можно скрипт на черный цвет инстала,белиэ буквы в нем?плиc скажите!нашел все скрипти што мне нужны кроме етого!

RapMan
22-11-2009, 18:19
Доброе время суток!

У меня следующий вопрос: как с помощь Form Designer можно заюзать свою страницу в Inno Setup ? То есть мне нужно чтобы после определенного нажатие на Далее отобразилась сначала моя форма, а потом уже инсталл

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

malyta
22-11-2009, 18:24
Colapse, Вот пожалуйста
[code]
const
Color = clblack;

procedure InitializeWizard();
begin
WizardForm.PageNameLabel.Font.Color:=clWhite;
WizardForm.Font.Color:=clWhite;
WizardForm.Color:=Color;
WizardForm.WelcomePage.Color:=Color;
WizardForm.InnerPage.Color:=Color;
WizardForm.FinishedPage.Color:=Color;
WizardForm.LicensePage.Color:=Color;
WizardForm.PasswordPage.Color:=Color;
WizardForm.InfoBeforePage.Color:=Color;
WizardForm.UserInfoPage.Color:=Color;
WizardForm.SelectDirPage.Color:=Color;
WizardForm.SelectComponentsPage.Color:=Color;
WizardForm.SelectProgramGroupPage.Color:=Color;
WizardForm.SelectTasksPage.Color:=Color;
WizardForm.ReadyPage.Color:=Color;
WizardForm.PreparingPage.Color:=Color;
WizardForm.InstallingPage.Color:=Color;
WizardForm.InfoAfterPage.Color:=Color;
WizardForm.DirEdit.Color:=Color;
WizardForm.DiskSpaceLabel.Color:=Color;
WizardForm.DirEdit.Color:=Color;
WizardForm.GroupEdit.Color:=Color;
WizardForm.PasswordLabel.Color:=Color;
WizardForm.PasswordEdit.Color:=Color;
WizardForm.PasswordEditLabel.Color:=Color;
WizardForm.ReadyMemo.Color:=Color;
WizardForm.TypesCombo.Color:=Color;
WizardForm.WelcomeLabel1.Color:=Color;
WizardForm.InfoBeforeClickLabel.Color:=Color;
WizardForm.MainPanel.Color:=Color;
WizardForm.PageNameLabel.Color:=Color;
WizardForm.PageDescriptionLabel.Color:=Color;
WizardForm.ReadyLabel.Color:=Color;
WizardForm.FinishedLabel.Color:=Color;
WizardForm.YesRadio.Color:=Color;
WizardForm.NoRadio.Color:=Color;
WizardForm.WelcomeLabel2.Color:=Color;
WizardForm.LicenseLabel1.Color:=Color;
WizardForm.InfoAfterClickLabel.Color:=Color;
WizardForm.ComponentsList.Color:=Color;
WizardForm.ComponentsDiskSpaceLabel.Color:=Color;
WizardForm.BeveledLabel.Color:=Color;
WizardForm.StatusLabel.Color:=Color;
WizardForm.FilenameLabel.Color:=Color;
WizardForm.SelectDirLabel.Color:=Color;
WizardForm.SelectStartMenuFolderLabel.Color:=Color;
WizardForm.SelectComponentsLabel.Color:=Color;
WizardForm.SelectTasksLabel.Color:=Color;
WizardForm.LicenseAcceptedRadio.Color:=Color;
WizardForm.LicenseNotAcceptedRadio.Color:=Color;
WizardForm.UserInfoNameLabel.Color:=Color;
WizardForm.UserInfoNameEdit.Color:=Color;
WizardForm.UserInfoOrgLabel.Color:=Color;
WizardForm.UserInfoOrgEdit.Color:=Color;
WizardForm.PreparingLabel.Color:=Color;
WizardForm.FinishedHeadingLabel.Color:=Color;
WizardForm.UserInfoSerialLabel.Color:=Color;
WizardForm.UserInfoSerialEdit.Color:=Color;
WizardForm.TasksList.Color:=Color;
WizardForm.RunList.Color:=Color;
WizardForm.SelectDirBrowseLabel.Color:=Color;
WizardForm.SelectStartMenuFolderBrowseLabel.Color:=Color;
end;

Colapse
22-11-2009, 18:28
malyta
спасибо!!!!

100pudov
22-11-2009, 19:55
Инсталлятор не может запустить фаил с расширением "*.msi", конкретно фаил vcredist.msi, для установки Microsoft Visual C++. Пишет, что не является приложением Win32.
Из системы, фаил запускается и установка Visual C++ проходит нормально.
Файлы с расширением MSI являются упакованными инсталяционными файлами для Windows Installer. Может нужно какой-то ключ в скрипте прописывать, для установки этой проги?

Habetdin
22-11-2009, 20:00
100pudov, запускайте через msiexec. Использование ключей и свойств установщика Windows (http://www.oszone.net/9008)
[Run]
Filename: msiexec; Parameters: "/i ""{src}\setup.msi"" /qn"; Flags: waituntilidle

100pudov
22-11-2009, 20:34
Не хочет инсталятор применять параметры запуска msiexec.

[Run]
Filename: msiexec.exe; Parameters: /i {src}\Redist\vcredist.msi /qn; Tasks: visualc_redist; Flags: waituntilidle

Наверно, что-то не правильно.

Habetdin
22-11-2009, 20:40
100pudov, а кавычки в пути?
Parameters: /i ""{src}\Redist\vcredist.msi"" /qn;
P.S.: {src} - каталог, в котором расположен инсталлятор, все константы - тут (http://www.jrsoftware.org/ishelp/topic_consts.htm)

100pudov
22-11-2009, 21:10
Спасибо.
Вроде бы в таком виде прошла установка.

Filename: msiexec.exe; Parameters: /i "{src}\Redist\vcredist.msi"; Tasks: visualc_redist; Flags: waituntilidle

Жаль нет проги, типа ISTool, только с большим (раз в 100) параметрами установок. Спецом для таких как я.
А то я, уже в транс вошел со всеми этими параметрами, константами, ключами, кавычками.)

Zolotnik
22-11-2009, 21:21
Serega, спасибо Вам большое. разобрался.

но есть еще желание: хочу что б сначала была страничка выбора дополнительних задач, а потом страничка выбора компонентов. по умолчанию наоборот. Как реализовать?

дело в том, что варианты установки (сетевая\локальная) я задаю через секцию [Tasks]. (в идеале разбить бы как то секцию [Tasks] на 2 странички: одна(с вариантами установки) до странички выбора компонентов, вторая - после.)

а в секции [Components] определяю дополнительние утилиты (в том числе две только для сетевой)

100pudov
22-11-2009, 23:10
[Run]
Filename: {app}\{#MyAppExeName}; Description: {cm:LaunchProgram,{#MyAppName}}; Flags: waituntilidle postinstall skipifsilent
Filename: {src}\DirectX\DXSETUP.exe; WorkingDir: {src}\DirectX; Tasks: dxinstall; Flags: waituntilidle
Filename: msiexec.exe; Parameters: /i "{src}\Redist\vcredist.msi"; Tasks: visualc_redist; Flags: waituntilidle
Filename: {src}\Redist\wmp10-windowsxp-x86-ru-ru.exe; WorkingDir: {src}\Redist; Tasks: wmp10_windowsxp; Flags: waituntilidle

Почему инсталятор запускает установку всех трех прог сразу (в месте). Вроде бы Flags: waituntilidle должен ждать процесса установки предыдущей проги.
Как сделать, чтоб установка шла по очереди.

Habetdin
22-11-2009, 23:30
100pudov, используйте waituntilterminated вместо waituntilidle, если у вас программы запускаются "громко", с участием пользователя..
Можно ведь "тихо" запускать:
Filename: {src}\DirectX\DXSETUP.exe; Parameters: /silent; WorkingDir: {src}\DirectX; Tasks: dxinstall; Flags: waituntilidle
Filename: msiexec.exe; Parameters: /i "{src}\Redist\vcredist.msi" /qn; Tasks: visualc_redist; Flags: waituntilidle
[hr]Вроде бы Flags: waituntilidle должен ждать процесса установки предыдущей проги. »
RTFM :read:




© OSzone.net 2001-2012