Как создать чекбокс в деинсталяторе с функцией не удалять файл?
» Inno Setup (создание инсталяционных пакетов)
marineharrison
http://rghost.ru/53556117
http://rghost.ru/53556117
vint56
Спасибо за тот пример на png.
Разобрался, всё пошло на ура.
Спасибо за тот пример на png.
Разобрался, всё пошло на ура.
vint56
Вот это мозги. Благодарю. Я так понял один скрипт подхватывает другой, где прописано то чтомне нужно. Спасибо за помощь.
Вот это мозги. Благодарю. Я так понял один скрипт подхватывает другой, где прописано то чтомне нужно. Спасибо за помощь.
Можно ли окно выбора компонентов (или параметров установки) разбить на две страницы? Выбрал параметры установки, нажал "далее" и выбрал оставшиеся параметры.
Смотрите скриншот - будет понятнее, что я хочу.
Смотрите скриншот - будет понятнее, что я хочу.
T2008 Пример взят от Example_NewCheckListBox и переделан под свой нужды
[more][Setup]
AppName=My Application
AppVersion=1.5
DefaultDirName={pf}\My Application
[Files]
Source: C:\eng.txt; DestDir: {app}; Check: English;
Source: C:\ger.txt; DestDir: {app}; Check: German;
Source: C:\eng1.txt; DestDir: {app}; Check: English1;
Source: C:\ger2.txt; DestDir: {app}; Check: German2;
[Code]
var
ComponentsA,ComponentsB: TWizardPage;
CheckListBox,CheckListBox2: TNewCheckListBox;
function English: Boolean;
begin
Result:= CheckListBox.Checked[3];
end;
function German: Boolean;
begin
Result:= CheckListBox.Checked[4];
end;
function English1: Boolean;
begin
Result:= CheckListBox2.Checked[3];
end;
function German2: Boolean;
begin
Result:= CheckListBox2.Checked[4];
end;
procedure InitializeWizard();
begin
ComponentsA := CreateCustomPage(wpWelcome, 'Выбор компонентов', 'Какие компоненты должны быть установлены?');
CheckListBox := TNewCheckListBox.Create(WizardForm);
CheckListBox.Parent := ComponentsA.Surface;
CheckListBox.SetBounds(ScaleX(0), ScaleY(0), ScaleX(417), ScaleY(233));
CheckListBox.AddCheckBoxEx('Program Files', '', 0, True, True, True, True, nil, True);
CheckListBox.AddCheckBoxEx('Help Files', '', 0, True, True, True, True, nil, True);
CheckListBox.AddCheckBoxEx('Readme Files', '', 0, True, True, True, True, nil, True);
CheckListBox.AddRadioButtonEx('English', '', 1, True, True, nil, False);
CheckListBox.AddRadioButtonEx('German', '', 1, False, True, nil, True);
CheckListBox.AddCheckBoxEx('1', '', 0, True, True, True, True, nil, True);
CheckListBox.AddCheckBoxEx('2', '', 0, True, True, True, True, nil, True);
CheckListBox.AddCheckBoxEx('3', '', 0, True, True, True, True, nil, True);
CheckListBox.AddCheckBoxEx('4', '', 0, True, True, True, True, nil, True);
CheckListBox.AddCheckBoxEx('5', '', 0, True, True, True, True, nil, True);
CheckListBox.AddCheckBoxEx('6', '', 0, True, True, True, True, nil, True);
CheckListBox.AddCheckBoxEx('7', '', 0, True, True, True, True, nil, True);
CheckListBox.AddCheckBoxEx('8', '', 0, True, True, True, True, nil, True);
CheckListBox.AddCheckBoxEx('9', '', 0, True, True, True, True, nil, True);
ComponentsB := CreateCustomPage(ComponentsA.ID, 'Выбор компонентов', 'Какие компоненты должны быть установлены?');
CheckListBox2 := TNewCheckListBox.Create(WizardForm);
CheckListBox2.Parent := ComponentsB.Surface;
CheckListBox2.SetBounds(ScaleX(0), ScaleY(0), ScaleX(417), ScaleY(233));
CheckListBox2.AddCheckBoxEx('Program Files', '', 0, True, True, True, True, nil, True);
CheckListBox2.AddCheckBoxEx('Help Files', '', 0, True, True, True, True, nil, True);
CheckListBox2.AddCheckBoxEx('Readme Files', '', 0, True, True, True, True, nil, True);
CheckListBox2.AddRadioButtonEx('Русский', '', 1, True, True, nil, False);
CheckListBox2.AddRadioButtonEx('Английский', '', 1, False, True, nil, True);
CheckListBox2.AddCheckBoxEx('1', '', 0, True, True, True, True, nil, True);
CheckListBox2.AddCheckBoxEx('2', '', 0, True, True, True, True, nil, True);
CheckListBox2.AddCheckBoxEx('3', '', 0, True, True, True, True, nil, True);
CheckListBox2.AddCheckBoxEx('4', '', 0, True, True, True, True, nil, True);
CheckListBox2.AddCheckBoxEx('5', '', 0, True, True, True, True, nil, True);
CheckListBox2.AddCheckBoxEx('6', '', 0, True, True, True, True, nil, True);
CheckListBox2.AddCheckBoxEx('7', '', 0, True, True, True, True, nil, True);
CheckListBox2.AddCheckBoxEx('8', '', 0, True, True, True, True, nil, True);
CheckListBox2.AddCheckBoxEx('9', '', 0, True, True, True, True, nil, True);
end;[/more]
[more][Setup]
AppName=My Application
AppVersion=1.5
DefaultDirName={pf}\My Application
[Files]
Source: C:\eng.txt; DestDir: {app}; Check: English;
Source: C:\ger.txt; DestDir: {app}; Check: German;
Source: C:\eng1.txt; DestDir: {app}; Check: English1;
Source: C:\ger2.txt; DestDir: {app}; Check: German2;
[Code]
var
ComponentsA,ComponentsB: TWizardPage;
CheckListBox,CheckListBox2: TNewCheckListBox;
function English: Boolean;
begin
Result:= CheckListBox.Checked[3];
end;
function German: Boolean;
begin
Result:= CheckListBox.Checked[4];
end;
function English1: Boolean;
begin
Result:= CheckListBox2.Checked[3];
end;
function German2: Boolean;
begin
Result:= CheckListBox2.Checked[4];
end;
procedure InitializeWizard();
begin
ComponentsA := CreateCustomPage(wpWelcome, 'Выбор компонентов', 'Какие компоненты должны быть установлены?');
CheckListBox := TNewCheckListBox.Create(WizardForm);
CheckListBox.Parent := ComponentsA.Surface;
CheckListBox.SetBounds(ScaleX(0), ScaleY(0), ScaleX(417), ScaleY(233));
CheckListBox.AddCheckBoxEx('Program Files', '', 0, True, True, True, True, nil, True);
CheckListBox.AddCheckBoxEx('Help Files', '', 0, True, True, True, True, nil, True);
CheckListBox.AddCheckBoxEx('Readme Files', '', 0, True, True, True, True, nil, True);
CheckListBox.AddRadioButtonEx('English', '', 1, True, True, nil, False);
CheckListBox.AddRadioButtonEx('German', '', 1, False, True, nil, True);
CheckListBox.AddCheckBoxEx('1', '', 0, True, True, True, True, nil, True);
CheckListBox.AddCheckBoxEx('2', '', 0, True, True, True, True, nil, True);
CheckListBox.AddCheckBoxEx('3', '', 0, True, True, True, True, nil, True);
CheckListBox.AddCheckBoxEx('4', '', 0, True, True, True, True, nil, True);
CheckListBox.AddCheckBoxEx('5', '', 0, True, True, True, True, nil, True);
CheckListBox.AddCheckBoxEx('6', '', 0, True, True, True, True, nil, True);
CheckListBox.AddCheckBoxEx('7', '', 0, True, True, True, True, nil, True);
CheckListBox.AddCheckBoxEx('8', '', 0, True, True, True, True, nil, True);
CheckListBox.AddCheckBoxEx('9', '', 0, True, True, True, True, nil, True);
ComponentsB := CreateCustomPage(ComponentsA.ID, 'Выбор компонентов', 'Какие компоненты должны быть установлены?');
CheckListBox2 := TNewCheckListBox.Create(WizardForm);
CheckListBox2.Parent := ComponentsB.Surface;
CheckListBox2.SetBounds(ScaleX(0), ScaleY(0), ScaleX(417), ScaleY(233));
CheckListBox2.AddCheckBoxEx('Program Files', '', 0, True, True, True, True, nil, True);
CheckListBox2.AddCheckBoxEx('Help Files', '', 0, True, True, True, True, nil, True);
CheckListBox2.AddCheckBoxEx('Readme Files', '', 0, True, True, True, True, nil, True);
CheckListBox2.AddRadioButtonEx('Русский', '', 1, True, True, nil, False);
CheckListBox2.AddRadioButtonEx('Английский', '', 1, False, True, nil, True);
CheckListBox2.AddCheckBoxEx('1', '', 0, True, True, True, True, nil, True);
CheckListBox2.AddCheckBoxEx('2', '', 0, True, True, True, True, nil, True);
CheckListBox2.AddCheckBoxEx('3', '', 0, True, True, True, True, nil, True);
CheckListBox2.AddCheckBoxEx('4', '', 0, True, True, True, True, nil, True);
CheckListBox2.AddCheckBoxEx('5', '', 0, True, True, True, True, nil, True);
CheckListBox2.AddCheckBoxEx('6', '', 0, True, True, True, True, nil, True);
CheckListBox2.AddCheckBoxEx('7', '', 0, True, True, True, True, nil, True);
CheckListBox2.AddCheckBoxEx('8', '', 0, True, True, True, True, nil, True);
CheckListBox2.AddCheckBoxEx('9', '', 0, True, True, True, True, nil, True);
end;[/more]
vint56
Еще одна просьба. Я дописал скрипт.
http://rghost.ru/53601979
Добавил туда смену диска и удалил лишнее. Однако при смене диска выкидывает окно, в котором скин используется, а вот обе кнопки не используют скин и отображаются стандартно. Кнопка "обзор" по высоте меньше, чем другие кнопки. Как бы ее сделать такой же.
Как бы это исправить.
И еще. прошу удалить по возможности лишние процедуры из скрипта. И как правильно удалить строку с records.inf. Я его не сипользую. Автоматом назначил по 50% каждому из архивов.
Еще одна просьба. Я дописал скрипт.
http://rghost.ru/53601979
Добавил туда смену диска и удалил лишнее. Однако при смене диска выкидывает окно, в котором скин используется, а вот обе кнопки не используют скин и отображаются стандартно. Кнопка "обзор" по высоте меньше, чем другие кнопки. Как бы ее сделать такой же.
Как бы это исправить.
И еще. прошу удалить по возможности лишние процедуры из скрипта. И как правильно удалить строку с records.inf. Я его не сипользую. Автоматом назначил по 50% каждому из архивов.
Что за ошибка, как исправить?
Цитата:
как исправить?
Использовать расширенную версию Inno Setup.
Цитата:
Использовать расширенную версию Inno Setup.
1) Не хочу. В стандартной поставке подобных функций не найдётся?
2) Как изменить размеры окна инсталлятора?
Если использую
procedure InitializeWizard;
begin
{ Create the pages }
WizardForm.ClientWidth:=ScaleX(790);
WizardForm.ClientHeight:=ScaleY(533);
WizardForm.Center;
end
то получаю вот такое убожество
T2008 Вот пример для стандартной версий
насчет изменить размеры окна инсталлятора всетаки установи расширинный компилятор там есть редактор форм
[more][Setup]
AppName=My Application
AppVersion=1.5
DefaultDirName={pf}\My Application
[Files]
Source: C:\eng.txt; DestDir: {app}; Check: English;
Source: C:\ger.txt; DestDir: {app}; Check: German;
Source: C:\eng1.txt; DestDir: {app}; Check: English1;
Source: C:\ger2.txt; DestDir: {app}; Check: German2;
[Code]
var
ComponentsA,ComponentsB: TWizardPage;
CheckListBox,CheckListBox2: TNewCheckListBox;
function English: Boolean;
begin
Result:= CheckListBox.Checked[3];
end;
function German: Boolean;
begin
Result:= CheckListBox.Checked[4];
end;
function English1: Boolean;
begin
Result:= CheckListBox2.Checked[3];
end;
function German2: Boolean;
begin
Result:= CheckListBox2.Checked[4];
end;
procedure InitializeWizard();
begin
ComponentsA := CreateCustomPage(wpWelcome, 'Выбор компонентов', 'Какие компоненты должны быть установлены?');
CheckListBox := TNewCheckListBox.Create(WizardForm);
CheckListBox.Parent := ComponentsA.Surface;
CheckListBox.SetBounds(ScaleX(0), ScaleY(0), ScaleX(417), ScaleY(233));
CheckListBox.AddCheckBox('Program Files', '', 0, True, True, True, True, nil);
CheckListBox.AddCheckBox('Help Files', '', 0, True, True, True, True, nil);
CheckListBox.AddCheckBox('Readme Files', '', 0, True, True, True, True, nil);
CheckListBox.AddRadioButton('English', '', 1, True, True, nil);
CheckListBox.AddRadioButton('German', '', 1, False, True, nil);
CheckListBox.AddCheckBox('1', '', 0, True, True, True, True, nil);
CheckListBox.AddCheckBox('2', '', 0, True, True, True, True, nil);
CheckListBox.AddCheckBox('3', '', 0, True, True, True, True, nil);
CheckListBox.AddCheckBox('4', '', 0, True, True, True, True, nil);
CheckListBox.AddCheckBox('5', '', 0, True, True, True, True, nil);
CheckListBox.AddCheckBox('6', '', 0, True, True, True, True, nil);
CheckListBox.AddCheckBox('7', '', 0, True, True, True, True, nil);
CheckListBox.AddCheckBox('8', '', 0, True, True, True, True, nil);
CheckListBox.AddCheckBox('9', '', 0, True, True, True, True, nil);
ComponentsB := CreateCustomPage(ComponentsA.ID, 'Выбор компонентов', 'Какие компоненты должны быть установлены?');
CheckListBox2 := TNewCheckListBox.Create(WizardForm);
CheckListBox2.Parent := ComponentsB.Surface;
CheckListBox2.SetBounds(ScaleX(0), ScaleY(0), ScaleX(417), ScaleY(233));
CheckListBox2.AddCheckBox('Program Files', '', 0, True, True, True, True, nil);
CheckListBox2.AddCheckBox('Help Files', '', 0, True, True, True, True, nil);
CheckListBox2.AddCheckBox('Readme Files', '', 0, True, True, True, True, nil);
CheckListBox2.AddRadioButton('Русский', '', 1, True, True, nil);
CheckListBox2.AddRadioButton('Английский', '', 1, False, True, nil);
CheckListBox2.AddCheckBox('1', '', 0, True, True, True, True, nil);
CheckListBox2.AddCheckBox('2', '', 0, True, True, True, True, nil);
CheckListBox2.AddCheckBox('3', '', 0, True, True, True, True, nil);
CheckListBox2.AddCheckBox('4', '', 0, True, True, True, True, nil);
CheckListBox2.AddCheckBox('5', '', 0, True, True, True, True, nil);
CheckListBox2.AddCheckBox('6', '', 0, True, True, True, True, nil);
CheckListBox2.AddCheckBox('7', '', 0, True, True, True, True, nil);
CheckListBox2.AddCheckBox('8', '', 0, True, True, True, True, nil);
CheckListBox2.AddCheckBox('9', '', 0, True, True, True, True, nil);
end;[/more]
marineharrison
насчет скина без понятия
насчет records.inf она же закаментирована значит на работает зачем трогать
удалить лишние процедуры из скрипта такой фигней не занимаюсь
насчет изменить размеры окна инсталлятора всетаки установи расширинный компилятор там есть редактор форм
[more][Setup]
AppName=My Application
AppVersion=1.5
DefaultDirName={pf}\My Application
[Files]
Source: C:\eng.txt; DestDir: {app}; Check: English;
Source: C:\ger.txt; DestDir: {app}; Check: German;
Source: C:\eng1.txt; DestDir: {app}; Check: English1;
Source: C:\ger2.txt; DestDir: {app}; Check: German2;
[Code]
var
ComponentsA,ComponentsB: TWizardPage;
CheckListBox,CheckListBox2: TNewCheckListBox;
function English: Boolean;
begin
Result:= CheckListBox.Checked[3];
end;
function German: Boolean;
begin
Result:= CheckListBox.Checked[4];
end;
function English1: Boolean;
begin
Result:= CheckListBox2.Checked[3];
end;
function German2: Boolean;
begin
Result:= CheckListBox2.Checked[4];
end;
procedure InitializeWizard();
begin
ComponentsA := CreateCustomPage(wpWelcome, 'Выбор компонентов', 'Какие компоненты должны быть установлены?');
CheckListBox := TNewCheckListBox.Create(WizardForm);
CheckListBox.Parent := ComponentsA.Surface;
CheckListBox.SetBounds(ScaleX(0), ScaleY(0), ScaleX(417), ScaleY(233));
CheckListBox.AddCheckBox('Program Files', '', 0, True, True, True, True, nil);
CheckListBox.AddCheckBox('Help Files', '', 0, True, True, True, True, nil);
CheckListBox.AddCheckBox('Readme Files', '', 0, True, True, True, True, nil);
CheckListBox.AddRadioButton('English', '', 1, True, True, nil);
CheckListBox.AddRadioButton('German', '', 1, False, True, nil);
CheckListBox.AddCheckBox('1', '', 0, True, True, True, True, nil);
CheckListBox.AddCheckBox('2', '', 0, True, True, True, True, nil);
CheckListBox.AddCheckBox('3', '', 0, True, True, True, True, nil);
CheckListBox.AddCheckBox('4', '', 0, True, True, True, True, nil);
CheckListBox.AddCheckBox('5', '', 0, True, True, True, True, nil);
CheckListBox.AddCheckBox('6', '', 0, True, True, True, True, nil);
CheckListBox.AddCheckBox('7', '', 0, True, True, True, True, nil);
CheckListBox.AddCheckBox('8', '', 0, True, True, True, True, nil);
CheckListBox.AddCheckBox('9', '', 0, True, True, True, True, nil);
ComponentsB := CreateCustomPage(ComponentsA.ID, 'Выбор компонентов', 'Какие компоненты должны быть установлены?');
CheckListBox2 := TNewCheckListBox.Create(WizardForm);
CheckListBox2.Parent := ComponentsB.Surface;
CheckListBox2.SetBounds(ScaleX(0), ScaleY(0), ScaleX(417), ScaleY(233));
CheckListBox2.AddCheckBox('Program Files', '', 0, True, True, True, True, nil);
CheckListBox2.AddCheckBox('Help Files', '', 0, True, True, True, True, nil);
CheckListBox2.AddCheckBox('Readme Files', '', 0, True, True, True, True, nil);
CheckListBox2.AddRadioButton('Русский', '', 1, True, True, nil);
CheckListBox2.AddRadioButton('Английский', '', 1, False, True, nil);
CheckListBox2.AddCheckBox('1', '', 0, True, True, True, True, nil);
CheckListBox2.AddCheckBox('2', '', 0, True, True, True, True, nil);
CheckListBox2.AddCheckBox('3', '', 0, True, True, True, True, nil);
CheckListBox2.AddCheckBox('4', '', 0, True, True, True, True, nil);
CheckListBox2.AddCheckBox('5', '', 0, True, True, True, True, nil);
CheckListBox2.AddCheckBox('6', '', 0, True, True, True, True, nil);
CheckListBox2.AddCheckBox('7', '', 0, True, True, True, True, nil);
CheckListBox2.AddCheckBox('8', '', 0, True, True, True, True, nil);
CheckListBox2.AddCheckBox('9', '', 0, True, True, True, True, nil);
end;[/more]
marineharrison
насчет скина без понятия
насчет records.inf она же закаментирована значит на работает зачем трогать
удалить лишние процедуры из скрипта такой фигней не занимаюсь
[more] Как организировать возможность сочетания текста и озвучки с тремя архивами !?
Comps1:=0; Comps2:=0; Comps3:=0;
#ifdef Components
TmpValue:=1;
if BtnGetChecked(LanguagetextButton[1]) then Comps1:=Comps1+TmpValue; //Компонент 1
TmpValue:=TmpValue*2;
if BtnGetChecked(LanguagetextButton[2]) then Comps1:=Comps1+TmpValue; //Компонент 2
TmpValue:=TmpValue*2;
if BtnGetChecked(LanguagevoiceButton[1]) then Comps1:=Comps1+TmpValue; //Компонент 3
TmpValue:=TmpValue*2;
if BtnGetChecked(LanguagevoiceButton[2]) then Comps1:=Comps1+TmpValue; //Компонент 4
#endif
#ifdef precomp
PCFVer:={#precomp};
#else
PCFVer:=0;
#endif
ISDoneError:=true;
if ISDoneInit(ExpandConstant('{src}\records.inf'), $F777, Comps1,Comps2,Comps3, MainForm.Handle, 0, @ProgressCallback) then begin
repeat
// ChangeLanguage('English');
if not SrepInit(ExpandConstant('{app}\'),128,0) then break;
if not PrecompInit(ExpandConstant('{app}\'),128,PCFVer) then break;
if not FileSearchInit(true) then break;
if not ISArcExtract ( 0, 0, ExpandConstant('{src}\BastionEN.bin'), ExpandConstant('{app}'), '', false, '', '', ExpandConstant('{app}'), notPCFonFLY {PCFonFLY}) then break;
//полная английская версия
if not ISArcExtract ( 0, 0, ExpandConstant('{src}\DataTextRu.bin'), ExpandConstant('{app}\Content'), '', false, '', '', ExpandConstant('{app}'), notPCFonFLY {PCFonFLY}) then break;
//Рус текст
if not ISArcExtract ( 0, 0, ExpandConstant('{src}\DataVoiceRu.bin'), ExpandConstant('{app}\Content\Audio'), '', false, '', '', ExpandConstant('{app}'), notPCFonFLY {PCFonFLY}) then break;
//Рус звук
P.S. если не сложно розписать что и как. [/more]
Comps1:=0; Comps2:=0; Comps3:=0;
#ifdef Components
TmpValue:=1;
if BtnGetChecked(LanguagetextButton[1]) then Comps1:=Comps1+TmpValue; //Компонент 1
TmpValue:=TmpValue*2;
if BtnGetChecked(LanguagetextButton[2]) then Comps1:=Comps1+TmpValue; //Компонент 2
TmpValue:=TmpValue*2;
if BtnGetChecked(LanguagevoiceButton[1]) then Comps1:=Comps1+TmpValue; //Компонент 3
TmpValue:=TmpValue*2;
if BtnGetChecked(LanguagevoiceButton[2]) then Comps1:=Comps1+TmpValue; //Компонент 4
#endif
#ifdef precomp
PCFVer:={#precomp};
#else
PCFVer:=0;
#endif
ISDoneError:=true;
if ISDoneInit(ExpandConstant('{src}\records.inf'), $F777, Comps1,Comps2,Comps3, MainForm.Handle, 0, @ProgressCallback) then begin
repeat
// ChangeLanguage('English');
if not SrepInit(ExpandConstant('{app}\'),128,0) then break;
if not PrecompInit(ExpandConstant('{app}\'),128,PCFVer) then break;
if not FileSearchInit(true) then break;
if not ISArcExtract ( 0, 0, ExpandConstant('{src}\BastionEN.bin'), ExpandConstant('{app}'), '', false, '', '', ExpandConstant('{app}'), notPCFonFLY {PCFonFLY}) then break;
//полная английская версия
if not ISArcExtract ( 0, 0, ExpandConstant('{src}\DataTextRu.bin'), ExpandConstant('{app}\Content'), '', false, '', '', ExpandConstant('{app}'), notPCFonFLY {PCFonFLY}) then break;
//Рус текст
if not ISArcExtract ( 0, 0, ExpandConstant('{src}\DataVoiceRu.bin'), ExpandConstant('{app}\Content\Audio'), '', false, '', '', ExpandConstant('{app}'), notPCFonFLY {PCFonFLY}) then break;
//Рус звук
P.S. если не сложно розписать что и как. [/more]
Здравствуйте! Подскажите пожалуйста, никак не могу сделать вот что: в скрипте на странице выбора папки установки сделать 2 радиокнопки; при выборе 1-й радиокнопки, например, берется путь из реестра, при выборе второй - любой стандартный путь, что-то вроде C:\Games\Example, причем в строке где указан путь установки он меняется в зависимости от выбранной радиокнопки. Вот пример в картинках.
http://imageshack.com/i/nqxi97p
http://imageshack.com/i/mwn3gup
http://imageshack.com/i/nqxi97p
http://imageshack.com/i/mwn3gup
Всем доброго времени суток. Как заставить инсталлятор заставить не просто копировать дополнительные компоненты, а распаковывать их ?
Ссылка на скрипт
http://yadi.sk/d/22H3ByxoLhLWX
Ссылка на скрипт
http://yadi.sk/d/22H3ByxoLhLWX
Цитата:
Всем доброго времени суток. Как заставить инсталлятор заставить не просто копировать дополнительные компоненты, а распаковывать их ?
Ссылка на скрипт
http://yadi.sk/d/22H3ByxoLhLWX
Непосредственно распаковка вот:
if not ISArcExtract ( 0, 0, ExpandConstant('{src}\Data.arc'), ExpandConstant('{app}'), '', false, '', '', ExpandConstant('{app}'), notPCFonFLY {PCFonFLY}) then break;
Цитата:
Непосредственно распаковка вот:
if not ISArcExtract ( 0, 0, ExpandConstant('{src}\Data.arc'), ExpandConstant('{app}'), '', false, '', '', ExpandConstant('{app}'), notPCFonFLY {PCFonFLY}) then break;
Не компилируется. Наверное, вставляю код не туда. Вставил в файл "Components ISS"
Жалуется на неизвестный идентефикатор ISArcExtract
Код:
Comp2Check:=BtnCreate(WizardForm.Handle,ScaleX(105),ScaleY(273),ScaleX(28),ScaleY(28),ExpandConstant('{tmp}\RadioBatton.png'),8,True);
BtnSetEvent(Comp2Check,BtnClickEventID,WrapBtnCallback(@Comp2Click,1));
if not ISArcExtract ( 0, 0, ExpandConstant('{src}\Data.arc'), ExpandConstant('{app}'), '', false, '', '', ExpandConstant('{app}'), notPCFonFLY {PCFonFLY}) then break;
BtnSetEvent(Comp2Check,BtnMouseEnterEventID,WrapBtnCallback(@WFBtnEnter,1));
BtnSetCursor(Comp2Check,GetSysCursorHandle(32649));
BtnSetChecked(Comp2Check,True);
haladar
http://rghost.ru/53738557
http://rghost.ru/53738557
Цитата:
haladar
http://rghost.ru/53738557
Спасибо, работает. Как я заметил, вы заменили модуль распаковки архивов. В связи с этим у меня возникает вопрос. Куда вбивать название основного архива, который инсталлятор должен распаковать первым делом ?
haladar
// Основной архив
if not ISArcExtract ( 0, 0, ExpandConstant('{src}\Data-A.arc'), ExpandConstant('{app}'), false, '', '', ExpandConstant('{app}'), notPCFonFLY) then break;
// Компоненты
if not ISArcExtract ( 2, 0, ExpandConstant('{src}\rustext.arc'), ExpandConstant('{app}'), false, '', '', ExpandConstant('{app}'), notPCFonFLY) then break;
if not ISArcExtract ( 3, 0, ExpandConstant('{src}\engtext.arc'), ExpandConstant('{app}'), false, '', '', ExpandConstant('{app}'), notPCFonFLY) then break;
if not ISArcExtract ( 5, 0, ExpandConstant('{src}\russound.arc'), ExpandConstant('{app}'), false, '', '', ExpandConstant('{app}'), notPCFonFLY) then break;
if not ISArcExtract ( 6, 0, ExpandConstant('{src}\engsound.arc'), ExpandConstant('{app}'), false, '', '', ExpandConstant('{app}'), notPCFonFLY) then break;
// Основной архив
if not ISArcExtract ( 0, 0, ExpandConstant('{src}\Data-A.arc'), ExpandConstant('{app}'), false, '', '', ExpandConstant('{app}'), notPCFonFLY) then break;
// Компоненты
if not ISArcExtract ( 2, 0, ExpandConstant('{src}\rustext.arc'), ExpandConstant('{app}'), false, '', '', ExpandConstant('{app}'), notPCFonFLY) then break;
if not ISArcExtract ( 3, 0, ExpandConstant('{src}\engtext.arc'), ExpandConstant('{app}'), false, '', '', ExpandConstant('{app}'), notPCFonFLY) then break;
if not ISArcExtract ( 5, 0, ExpandConstant('{src}\russound.arc'), ExpandConstant('{app}'), false, '', '', ExpandConstant('{app}'), notPCFonFLY) then break;
if not ISArcExtract ( 6, 0, ExpandConstant('{src}\engsound.arc'), ExpandConstant('{app}'), false, '', '', ExpandConstant('{app}'), notPCFonFLY) then break;
Цитата:
haladar
// Основной архив
if not ISArcExtract ( 0, 0, ExpandConstant('{src}\Data-A.arc'), ExpandConstant('{app}'), false, '', '', ExpandConstant('{app}'), notPCFonFLY) then break;
// Компоненты
if not ISArcExtract ( 2, 0, ExpandConstant('{src}\rustext.arc'), ExpandConstant('{app}'), false, '', '', ExpandConstant('{app}'), notPCFonFLY) then break;
if not ISArcExtract ( 3, 0, ExpandConstant('{src}\engtext.arc'), ExpandConstant('{app}'), false, '', '', ExpandConstant('{app}'), notPCFonFLY) then break;
if not ISArcExtract ( 5, 0, ExpandConstant('{src}\russound.arc'), ExpandConstant('{app}'), false, '', '', ExpandConstant('{app}'), notPCFonFLY) then break;
if not ISArcExtract ( 6, 0, ExpandConstant('{src}\engsound.arc'), ExpandConstant('{app}'), false, '', '', ExpandConstant('{app}'), notPCFonFLY) then break;
Спасибо, все начало распаковываться, но опять вылезло 1 "но"
Установка начинается не с 0 %, а с 50 %. С 50% до 97% устанавливаются компоненты, а в оставшиеся 3% распаковывается основной архив
haladar
А не легче так:
// Основной архив
if not ISArcExtract ( 0, 0, ExpandConstant('{src}\Data-A.arc'), ExpandConstant('{app}'), false, '', '', ExpandConstant('{app}'), notPCFonFLY) then break;
// Компоненты
if not ISArcExtract ( 0, 0, ExpandConstant('{src}\rustext.arc'), ExpandConstant('{app}'), false, '', '', ExpandConstant('{app}'), notPCFonFLY) then break;
if not ISArcExtract ( 0, 0, ExpandConstant('{src}\engtext.arc'), ExpandConstant('{app}'), false, '', '', ExpandConstant('{app}'), notPCFonFLY) then break;
if not ISArcExtract ( 0, 0, ExpandConstant('{src}\russound.arc'), ExpandConstant('{app}'), false, '', '', ExpandConstant('{app}'), notPCFonFLY) then break;
if not ISArcExtract ( 0, 0, ExpandConstant('{src}\engsound.arc'), ExpandConstant('{app}'), false, '', '', ExpandConstant('{app}'), notPCFonFLY) then break;
Делаешь тестовый прогон далее раскоментируешь #define records
Снова компилишь и радуешься...
А не легче так:
// Основной архив
if not ISArcExtract ( 0, 0, ExpandConstant('{src}\Data-A.arc'), ExpandConstant('{app}'), false, '', '', ExpandConstant('{app}'), notPCFonFLY) then break;
// Компоненты
if not ISArcExtract ( 0, 0, ExpandConstant('{src}\rustext.arc'), ExpandConstant('{app}'), false, '', '', ExpandConstant('{app}'), notPCFonFLY) then break;
if not ISArcExtract ( 0, 0, ExpandConstant('{src}\engtext.arc'), ExpandConstant('{app}'), false, '', '', ExpandConstant('{app}'), notPCFonFLY) then break;
if not ISArcExtract ( 0, 0, ExpandConstant('{src}\russound.arc'), ExpandConstant('{app}'), false, '', '', ExpandConstant('{app}'), notPCFonFLY) then break;
if not ISArcExtract ( 0, 0, ExpandConstant('{src}\engsound.arc'), ExpandConstant('{app}'), false, '', '', ExpandConstant('{app}'), notPCFonFLY) then break;
Делаешь тестовый прогон далее раскоментируешь #define records
Снова компилишь и радуешься...
Цитата:
Делаешь тестовый прогон далее раскоментируешь #define records
Снова компилишь и радуешься...
Что-то мне это не сильно помогло.
haladar а у тебя
if not ISArcExtract ( 0, 0, ExpandConstant('{src}\Data-A.arc'), ExpandConstant('{app}'), false, '', '', ExpandConstant('{app}'), notPCFonFLY) then break; точно 0 а не 50
if not ISArcExtract ( 0, 0, ExpandConstant('{src}\Data-A.arc'), ExpandConstant('{app}'), false, '', '', ExpandConstant('{app}'), notPCFonFLY) then break; точно 0 а не 50
Цитата:
if not ISArcExtract ( 0, 0, ExpandConstant('{src}\Data-A.arc'), ExpandConstant('{app}'), false, '', '', ExpandConstant('{app}'), notPCFonFLY) then break; точно 0 а не 50
Точно.
Решил-таки проблему. Все больше спасибо за помощь)
Всем привет!
1.Инсталятор на русском! При добавлении английского языка "счетчик" остается на русском
http://rghost.ru/53759173/image.png Можна его исмправить или удалить!?
2. Как можна изменить размер диалогового окна http://rghost.ru/53751024/image.png.
Подскажите люди добрие!
1.Инсталятор на русском! При добавлении английского языка "счетчик" остается на русском
http://rghost.ru/53759173/image.png Можна его исмправить или удалить!?
2. Как можна изменить размер диалогового окна http://rghost.ru/53751024/image.png.
Подскажите люди добрие!
Доброго времени суток!
Я к вам с просьбой о помощи. Очень нужно создать инсталяционный пакет, но знаний в данном направлении нет, а время поджимает.
Что имеем: Есть огромное количество инсталяционных файлов, которые делятся на 5 категорий по применению в разных ОС (ОС всего три: Win7 32, Win7 64 и XP 32), соответственно:
1) ставится не все ОС
2) ставится на Win7 64
3) ставится на любую х32
4) ставится на Win7 32
5) ставится на XP 32
что нужно: чтобы был единый файл-инсталятор, при запуске которого определялась бы ОС и в соответствии с ОС файлы запускались по очереди.
Как я уже писал, в данном вопросе я ни в зуб ногой (ни структуры INNO, ни паскаля не знаю и все получается методом тыка). На данный момент получилось только это (и это за 2 дня в свободное от работы и семьи время):
Код: [Setup]
AppName=TestInstall
AppVerName=1
DefaultDirName={tmp}\
OutputBaseFilename=Setup (сборка от {#DateTime})
[Code]
function InitializeSetup: Boolean;
var
Version: TWindowsVersion;
S: String;
begin
GetWindowsVersionEx(Version);
if (Version.Major = 6) and
(Version.Minor = 1)
then MsgBox('test message'#13'Windows 7', mbInformation, mb_Ok)
if (Version.Major = 5)
then MsgBox('test message'#13'Windows XP', mbInformation, mb_Ok)
end;
Я к вам с просьбой о помощи. Очень нужно создать инсталяционный пакет, но знаний в данном направлении нет, а время поджимает.
Что имеем: Есть огромное количество инсталяционных файлов, которые делятся на 5 категорий по применению в разных ОС (ОС всего три: Win7 32, Win7 64 и XP 32), соответственно:
1) ставится не все ОС
2) ставится на Win7 64
3) ставится на любую х32
4) ставится на Win7 32
5) ставится на XP 32
что нужно: чтобы был единый файл-инсталятор, при запуске которого определялась бы ОС и в соответствии с ОС файлы запускались по очереди.
Как я уже писал, в данном вопросе я ни в зуб ногой (ни структуры INNO, ни паскаля не знаю и все получается методом тыка). На данный момент получилось только это (и это за 2 дня в свободное от работы и семьи время):
Код: [Setup]
AppName=TestInstall
AppVerName=1
DefaultDirName={tmp}\
OutputBaseFilename=Setup (сборка от {#DateTime})
[Code]
function InitializeSetup: Boolean;
var
Version: TWindowsVersion;
S: String;
begin
GetWindowsVersionEx(Version);
if (Version.Major = 6) and
(Version.Minor = 1)
then MsgBox('test message'#13'Windows 7', mbInformation, mb_Ok)
if (Version.Major = 5)
then MsgBox('test message'#13'Windows XP', mbInformation, mb_Ok)
end;
Ситуация такая:
Есть инсталлятор, который распаковывает помимо основного файла еще и компоненты, которые выбирает юзер. Если распаковывать 1 компонент, то все нормально, а если 2, то прогресс установки идет уже после 100 %
Т.Е. основной файл распаковывается до 100 %, а дальше при распаковке компонентов прогресс-бар идет дальше т.е. 110 % и т.д.
Вот основной скрипт, скрипт компонентов, и скрипт ISDone
http://yadi.sk/d/fqcHsAFILqyrY
Есть инсталлятор, который распаковывает помимо основного файла еще и компоненты, которые выбирает юзер. Если распаковывать 1 компонент, то все нормально, а если 2, то прогресс установки идет уже после 100 %
Т.Е. основной файл распаковывается до 100 %, а дальше при распаковке компонентов прогресс-бар идет дальше т.е. 110 % и т.д.
Вот основной скрипт, скрипт компонентов, и скрипт ISDone
http://yadi.sk/d/fqcHsAFILqyrY
haladar, прочитай внимательно справку к ISDone, и не задавай больше глупых вопросов.
Цитата:
haladar, прочитай внимательно справку к ISDone, и не задавай больше глупых вопросов.
Дельный совет. Решил проблему с помощью тестового прогона.
сделал на bmp
Страницы: 12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758
Предыдущая тема: Только инсталлятор
Форум Ru-Board.club — поднят 15-09-2016 числа. Цель - сохранить наследие старого Ru-Board, истории становления российского интернета. Сделано для людей.