PDA

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


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

BlackSelf
16-05-2009, 05:20
p3rf3ct1c, путь к ProgramData в Висте и семерке обозначает константа {commonappdata}, то есть в твоем случае лучше написать так:
...................................
//Проверяем присутствие папки после удаления
If DirExists(ExpandConstant('{commonappdata}\2DBoy\WorldOfGoo')) then
...................................

p3rf3ct1c
16-05-2009, 12:05
BlackSelf,
Спасибо.

А вы можете подсказать почему у меня в Unpacker'е кнопки не работают, кроме кнопки "Открыть"?

Unsane
17-05-2009, 12:13
Вешаю обработчик на изменение комбобокса "тип установки":
WizardForm.TypesCombo.OnChange := @TypesComboOnChange;
Перестает отрабатываться смена типов (компоненты не изменяются при изменении типа установки). Без обработчика все нормально. Как можно обойти проблему?

Serega
17-05-2009, 12:41
Перестает отрабатываться смена типов (компоненты не изменяются при изменении типа установки). Без обработчика все нормально. »Приведите пример, как вы делаете. Хотя теоретически, всё правильно, т.е. всё зависит от того, что вы пишите в процедуре TypesComboOnChange.
Задав свою процедуру вы переопределяете стандартную смену ComboBox'а, заданного по умолчанию.

Unsane
17-05-2009, 13:01
От содержимого обработчика вообще ничего не зависит. Повесил пустой обработчик - 0 реакции.
procedure TypesComboOnChangeT(Sender: TObject); begin end;

procedure InitializeWizard();
begin
WizardForm.TypesCombo.OnChange := @TypesComboOnChangeT;
end;


Есть ли возможность вызвать эту стандартную процедуру или сделать ее эмуляцию?

з.ы. еще заметил, что из-за этого косяка не отрабатывается установка некоторых компонентов.

Serega
17-05-2009, 14:31
Есть ли возможность вызвать эту стандартную процедуру или сделать ее эмуляцию? »Вызвать стандартную - нет, придётся прописывать всё в ручную, а это...
заметил, что из-за этого косяка не отрабатывается установка некоторых компонентов. »такое скорей всего вряд ли, по крайней мере я не думаю, чтоб изменение в стандартной процедуре TypesCombo.OnChange, как-то влияло на саму установку.

А что вы вообще хотите задать в TypesComboOnChangeT, просто может это можно решить стандартными способами? Объясните, что вы хотите увидеть?

Unsane
17-05-2009, 15:34
Итак, некоторое время назад, я писал здесь вопрос по поводу выбора языка (http://forum.oszone.net/post-1109583-670.html).
Я написал функцию, которая при показе формы "wpSelectComponents" перебирает компоненты и "насильно" выделяет "радиобатон" того языка, который был выбран как язык инсталлятора.
Есть в этом подходе косяк - при смене типа установки язык сбрасывается в "первоначальное" (т.е. то, каким бы он был без моего программного вмешательства) положение.
Вот на изменение комбобокса "тип установки" хочу повесить процедура проверки, которая будет возвращать нужный язык.

Serega
17-05-2009, 16:29
Итак, некоторое время назад, я писал здесь вопрос по поводу выбора языка.
Я написал функцию, которая при показе формы "wpSelectComponents" перебирает компоненты и "насильно" выделяет "радиобатон" того языка, который был выбран как язык инсталлятора. »Да, помню, было такое... Я подумал, что вы уже решили эту задачу...
Попробуйте такой вариант[Setup]
AppName=My Program
AppVerName=My Program v 1.5
DefaultDirName={pf}\My Program
OutputDir=.
Compression=lzma/ultra
SolidCompression=yes
;ComponentsListTVStyle=true

[Languages]
Name: rus; MessagesFile: compiler:Languages\Russian.isl
Name: eng; MessagesFile: compiler:Languages\English.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
if ActiveLanguage = 'rus' then
WizardForm.ComponentsList.Checked[2]:= True else
WizardForm.ComponentsList.Checked[3]:= True;
end;

Unsane
17-05-2009, 18:22
Интегрировал Ваш пример в скрипт - не работает. Запустил в новом - работает.
Начал разбираться и нашел корень ошибки - невнимательность.
Выделение прыгало из-за следующего:
Name: language\english; Description: {cm:EnglishLanguage}; Types: type1 type2 type3; Flags: exclusive
Name: language\russian; Description: {cm:RussianLanguage}; Types: type1 type2 type3; Flags: exclusive
Забыл убрать, когда копировал.
Мой способ тоже работает, но ввиду громоздкости оставлю Ваш.

Спасибо :clapping:

Potursak
18-05-2009, 15:19
Какой камандой можно автоматически запустить файл после его установки?

Serega
18-05-2009, 16:48
Какой камандой можно автоматически запустить файл после его установки? »
[Run]
Filename: {app}\MyProg.exe; Description: Запустить программу MyProg?; Flags: postinstall nowait skipifsilent

Potursak
18-05-2009, 17:31
Serega_, а как сделать вот такие http://s47.radikal.ru/i117/0905/29/78b5a3145ad6.jpg кнопочки у меня вот такие http://s54.radikal.ru/i145/0905/bc/98251038fc6b.jpg

Отличие одних от других думаю вы знаете-по статусу положенно.Я нашел решение как открыть приложенеи после его установки сам:

[Run]
Filename: {win}\Musik.exe;

Тодга не будет создаватся такой диалог http://s45.radikal.ru/i109/0905/83/47020011a15bt.jpg (http://radikal.ru/F/s45.radikal.ru/i109/0905/83/47020011a15b.jpg.html)
Приложение просто запускается-проще!

boss911
18-05-2009, 18:03
а как сделать вот такие кнопочки»
На каждом компоненте либо задаче, в зависимости, где вам нужно, укажите флаг exclusive, например:
[Components]
Name: MyName; Description: Компонент #1; Flags: exclusive
либо
[Tasks]
Name: MyName; Description: Задача #1; Flags: exclusive

Potursak
18-05-2009, 18:25
boss911, это конечно я уверен правильно но почему у меня вот такая ошибка
http://s60.radikal.ru/i170/0905/af/b9432222bb8ct.jpg (http://radikal.ru/F/s60.radikal.ru/i170/0905/af/b9432222bb8c.jpg.html)

boss911
18-05-2009, 18:33
Potursak, приведите пример, кусок скрипта (всех строк компонентов или задач). В этот флаг указали только в секции Components, либо в Tasks, или еще где-то?

Serega
18-05-2009, 18:48
Potursak, ошибка говорит о том, что параметр флага, включает неизвестный флаг, т.е. вы просто записали не правильно слово exclusive или там присутствует ещё какой-то флаг...
boss911, правильно сказал, привидите пример своего скрипта.

Potursak
18-05-2009, 18:52
boss911,



[Types]
Name: "custom"; Description: "Выборочная установка"; Flags: exclusive
[Files]
Source: "C:\Documents and Settings\Администратор\Рабочий стол\Новая папка\{sys}\1.exe"; DestDir: "{win}"; Flags: deleteafterinstall ignoreversion ; Components: "Com1"; DestName: "ViOrb.exe";
Source: "C:\Documents and Settings\Администратор\Рабочий стол\Новая папка\{sys}\2.exe"; DestDir: "{win}"; Flags: deleteafterinstall ignoreversion ; Components: "Com2"; DestName: "ViOrb.exe";
Source: "C:\Documents and Settings\Администратор\Рабочий стол\Новая папка\{sys}\3.exe"; DestDir: "{win}"; Flags: deleteafterinstall ignoreversion ; Components: "Com3"; DestName: "ViOrb.exe";
Source: "C:\Documents and Settings\Администратор\Рабочий стол\Новая папка\{sys}\4.exe"; DestDir: "{win}"; Flags: deleteafterinstall ignoreversion ; Components: "Com4"; DestName: "ViOrb.exe";
Source: "C:\Documents and Settings\Администратор\Рабочий стол\Новая папка\{sys}\5.exe"; DestDir: "{win}"; Flags: deleteafterinstall ignoreversion ; Components: "Com5"; DestName: "ViOrb.exe";
Source: "C:\Documents and Settings\Администратор\Рабочий стол\Новая папка\{sys}\6.exe"; DestDir: "{win}"; Flags: deleteafterinstall ignoreversion ; Components: "Com6"; DestName: "ViOrb.exe";
Source: "C:\Documents and Settings\Администратор\Рабочий стол\Новая папка\{sys}\7.exe"; DestDir: "{win}"; Flags: deleteafterinstall ignoreversion ; Components: "Com7"; DestName: "ViOrb.exe";
Source: "C:\Documents and Settings\Администратор\Рабочий стол\Новая папка\{sys}\8.exe"; DestDir: "{win}"; Flags: deleteafterinstall ignoreversion ; Components: "Com8"; DestName: "ViOrb.exe";
Source: "C:\Documents and Settings\Администратор\Рабочий стол\Новая папка\{sys}\9.exe"; DestDir: "{win}"; Flags: deleteafterinstall ignoreversion ; Components: "Com9"; DestName: "ViOrb.exe";
Source: "C:\Documents and Settings\Администратор\Рабочий стол\Новая папка\{sys}\10.exe"; DestDir: "{win}"; Flags: deleteafterinstall ignoreversion ; Components: "Com10"; DestName: "ViOrb.exe";
Source: "C:\Documents and Settings\Администратор\Рабочий стол\Новая папка\{sys}\11.exe"; DestDir: "{win}"; Flags: deleteafterinstall ignoreversion ; Components: "Com11"; DestName: "ViOrb.exe";
Source: "C:\Documents and Settings\Администратор\Рабочий стол\Новая папка\{sys}\12.exe"; DestDir: "{win}"; Flags: deleteafterinstall ignoreversion ; Components: "Com12"; DestName: "ViOrb.exe";
Source: "C:\Documents and Settings\Администратор\Рабочий стол\Новая папка\{sys}\13.exe"; DestDir: "{win}"; Flags: deleteafterinstall ignoreversion ; Components: "Com13"; DestName: "ViOrb.exe";
Source: "C:\Documents and Settings\Администратор\Рабочий стол\Новая папка\{sys}\14.exe"; DestDir: "{win}"; Flags: deleteafterinstall ignoreversion ; Components: "Com14"; DestName: "ViOrb.exe";
Source: "C:\Documents and Settings\Администратор\Рабочий стол\Новая папка\{sys}\15.exe"; DestDir: "{win}"; Flags: deleteafterinstall ignoreversion ; Components: "Com15"; DestName: "ViOrb.exe";

Serega
18-05-2009, 19:11
Potursak, прочитайте внимательно, что вам говорил boss911,
[Components]
Name: MyName; Description: Компонент #1; Flags: exclusive
либо
[Tasks]
Name: MyName; Description: Задача #1; Flags: exclusive
»этот флаг используется только в этих секциях... зачем его записывать в секцию [Types]? У вас используется секция [Components], туда и записываете этот флаг, у тех компонентов, которые должны иметь RadioButton.

Potursak
18-05-2009, 21:55
Очень хочется разобратся как Проказзза в этой (http://forum.oszone.ru/thread-76170-26.html) теме сделал тихий инсталятор использующий INF файл для выбора памятки и сам файл установки Run.exe.
Для интеграции нужной памятки в дистрибутив, занесите нужную памятку в файл Run.inf
Components=com1 »
Как мне кажется там ссылка на файл идет с определенным параметром.

Serega
18-05-2009, 22:26
Potursak, в этом inf файле указывается, какой из компонентов устанавливать. Почитайте Справку: Параметры командной строки инсталлятора, ключи /SAVEINF и /LOADINF.
Или можете посмотреть у меня в подписи, нажмите на Inno Setup и там есть ссылка на Параметры командной строки инсталлятора.




© OSzone.net 2001-2012