Ru-Board.club
← Вернуться в раздел «Программы»

» Inno Setup (создание инсталяционных пакетов)

Автор: maxdddca123
Дата сообщения: 28.05.2007 15:03
Genri
Теперь выдаёт ошибку
    Runtime Error (at 35:1111):
    
    Access violation at address 7C913144. Write of address 00403755.

В строке box_name:=GetIniString(SectionNames[i],'BoxName','',ExpandConstant('{app}\') + 'Referent_Setup.ini')
Что ему опять не нравится ?

Автор: Yalos
Дата сообщения: 28.05.2007 15:07
вот правильный вариант запуска внешнего приложения

[Run]
Filename: "attrib"; WorkingDir: "{app}"; Parameters: " +S +H listing_*.html"; Flags: runhidden

НЕ работает без WorkingDir даже если путь передается в параметрах, причем правильный путь(в смысле без пробелов, в формате 8,3)

а изначально задача стояла такая: необходимо добавить содержимое каталога в инсталлятор, причем в каталоге только ОДИН не скрытый файл, остальные скрытые, их Inno не видит. поэтому пришлось написать батник, который снимает атрибуты Скрытый,Системный , затем создает инсталлятор(который по окончании инсталляции ставит эти атрибуты на файлы) и вернуть атрибуты на место в исходном каталоге.
Жаль что не доступны эти функции на паскале - приходится запускать внешнее приложение.
Автор: Genri
Дата сообщения: 28.05.2007 15:15
NightW0lf
Код:
procedure CurPageChanged(CurPageID: Integer);
begin
if CurPageID = wpReady then
begin
WizardForm.ReadyMemo.Lines.Add('');
if Page.SelectedValueIndex <> -1 then
WizardForm.ReadyMemo.Lines.Add('Additional programms:');
if Page.Values[0] then
WizardForm.ReadyMemo.Lines.Add(#9 + 'Confirm registration');
if Page.Values[1] then
WizardForm.ReadyMemo.Lines.Add(#9 + 'Install Acrobat Reader');
end;
end;
Автор: maxdddca123
Дата сообщения: 28.05.2007 15:20
Genri
[more=Вот весь кусок]
procedure GetSectionNames(const filename: string; var SectNames: TArrayOfString);
var
i, SectionCount: integer;
IniStrings: TArrayOfString;
begin
LoadStringsFromFile(ExpandConstant('{app}\') + 'Referent_Setup.ini', IniStrings);
for i:= 0 to GetArrayLength(IniStrings)-1 do
begin
if (IniStrings[i] <> '') and (IniStrings[i][1] = '[') then

begin
SectionCount:= SectionCount + 1;
SetArrayLength(SectNames, SectionCount);
Delete(IniStrings[i], 1, 1);
Delete(IniStrings[i], Length(IniStrings[i])-1, 2);
SectNames[SectionCount - 1]:= IniStrings[i];
//MsgBox(SectNames[SectionCount - 1], mbError, MB_OK);
end;
end;
end;


function NextButtonClick(CurPageID: Integer):boolean;
var
Page: TWizardPage;
ProcessorName:string;
CurrentKey,Akey,Abonent,Info,PageFilePanel: TPanel;
CurrentKeyNamePanel, AkeyNamePanel,AbonentNamePanel,InfoNamePanel,PageFileTotalPanel: TMemo;

StaticText,StaticText2:TNewStaticText;

begin
if CurPageID = wpSelectDir then
begin
Result := True;
if FileExists('A:\Asetup.ini') then
begin
Page:=CreateCustomPage(wpSelectDir, 'Ключевая информация', 'Проверка ключевой дискеты:');
//MsgBox(CurrentKeyID, mbError, MB_OK);
key := GetIniString('User_1', 'KeyID', '', 'A:\Asetup.ini');
Login := GetIniString('User_1', 'Login', '', 'A:\Asetup.ini');
BoxesCount:=GetIniInt('Setup','BoxesCount',0,0,0,ExpandConstant('{app}\') + 'Referent_Setup.ini');
GetSectionNames(ExpandConstant('{app}\') + 'Referent_Setup.ini', SectionNames);
for i:=0 to GetArrayLength(SectionNames) - 1 do
begin
box_name:=GetIniString(IniStrings[i],'BoxName','',ExpandConstant('{app}\') + 'Referent_Setup.ini')
//MsgBox(Login, mbError, MB_OK);
MsgBox(box_name, mbError, MB_OK);
if Login=box_name then
CurrentKeyID:=GetIniString(IniStrings[i],'KeyID','',ExpandConstant('{app}\') + 'Referent_Setup.ini')
//Break;
end;
//MsgBox(IntToStr(BoxesCount), mbError, MB_OK);
//MsgBox(box_name, mbError, MB_OK);
CurrentKey := TPanel.Create(Page);
with CurrentKey do
begin
Parent := Page.Surface;
Caption := 'Установленный ключ';
Left := ScaleX(0);
Top := ScaleY(32);
Width := ScaleX(121);
Height := ScaleY(25);
BevelInner := bvLowered;
TabOrder := 0;
Alignment:=taCenter;
end;

CurrentKeyNamePanel := TMemo.Create(Page);
with CurrentKeyNamePanel do
begin
Parent := Page.Surface;
Text :=CurrentKeyID;
ReadOnly := True;
//Caption := CurrentKeyID;
Left := ScaleX(128);
Top := ScaleY(32);
Width := ScaleX(281);
Height := ScaleY(25);
//BevelInner := bvLowered;
Color := $CCFFCC;
//TabOrder := 1;
Alignment:=taCenter;
end;

Akey:=TPanel.Create(Page);
with Akey do
begin
Parent:=Page.Surface;
Caption:='Ключ на дискете';
Left:=ScaleX(0);
Top:=CurrentKey.Top+27;
Width:=ScaleX(121);
Height:=ScaleY(25);
BevelInner:=bvLowered;
TabOrder:=0;
Alignment:=taCenter;
end;

AkeyNamePanel:=TMemo.Create(Page);
with AkeyNamePanel do
begin
Parent:=Page.Surface;
Text:=key;
Left:=ScaleX(128);
Top:=Akey.Top;
Width:=ScaleX(281);
Height:=ScaleY(25);
//BevelInner:=bvLowered;
Color:=$CCFFCC;
//TabOrder:=1;
Alignment:=taCenter;
end;

Abonent:=TPanel.Create(Page);
with Abonent do
begin
Parent:=Page.Surface;
Caption:='Владелец';
Left:=ScaleX(0);
Top:=Akey.Top+27;
Width:=ScaleX(121);
Height:=ScaleY(25);
BevelInner:=bvLowered;
TabOrder:=0;
Alignment:=taCenter;
end;

AbonentNamePanel:=TMemo.Create(Page);
with AbonentNamePanel do
begin
Parent:=Page.Surface;
Text:=GetIniString('User_1', 'FName', '', 'A:\Asetup.ini');
Left:=ScaleX(128);
Top:=Abonent.Top;
Width:=ScaleX(281);
Height:=ScaleY(25);
//BevelInner:=bvLowered;
//TabOrder:=1;
//Color:=12639424;
Alignment:=taCenter;
end;

Info:=TPanel.Create(Page);
with Info do
begin
Parent:=Page.Surface;
Caption:='Результат:'
Left:=0;
Top:=AbonentNamePanel.Top+27;
Width:=ScaleX(121);
Height:=ScaleY(50);
BevelInner:=bvLowered;
TabOrder:=0;
Alignment:=taCenter;
end;

InfoNamePanel:=TMemo.Create(Page);
with InfoNamePanel do
begin
Parent:=Page.Surface;
Text:='Всё готово к обновлению !';
Left:=AbonentNamePanel.Left;
Top:=Info.Top;
Width:=AbonentNamePanel.Width;
Height:=ScaleY(50);
//BevelInner:=bvLowered;
//TabOrder:=1;
//Color:=12639424;
Alignment:=taCenter;
end;

if key < CurrentKeyID then
begin
AkeyNamePanel.Color:=clRed;
InfoNamePanel.Text:='На дискете находится более старый ключ, чем установленный. Обновление невозможно!';
//InfoNamePanel.Color:=clRed;
//WizardForm.NextButton.Enabled:=false;
end;

if (key = CurrentKeyID) and (CurPageID = Page.ID) then
begin
AkeyNamePanel.Color:=clYellow;
WizardForm.NextButton.Enabled:=false;
InfoNamePanel.Text:='Ключ на дискете совпадает с уже установелнным ключом. Обновление невозможно!';
end;

if copy(key,1,4)+copy(key,6,3) <> copy(CurrentKeyID,1,4)+ copy(CurrentKeyID,6,3) then
begin
AkeyNamePanel.Color:=clRed;
//WizardForm.NextButton.Enabled:=false;
InfoNamePanel.Text:='Ключ на дискете не совпадает с установелнным ключом. Обновление невозможно! Убедитесь, что вы вставили правильную дискету.';
end;
end
else
begin
MsgBox('Вставлена неверная дискета.', mbError, MB_OK);
Result := False;
end;
end else Result := True;
//end;
end;
[/more]
Тогда уж и подскажи сразу, как сюда вставить неактивную кнопку Далее ?? Конкретно внизу например у меня выделено место, где не работает. Посмотри плиз.
Автор: Genri
Дата сообщения: 28.05.2007 15:22
Yalos
Цитата:
....и вернуть атрибуты на место в исходном каталоге.
-- а в секции [Files] не пробовал добавить Attribs: hidden system ?

Автор: ZavadS
Дата сообщения: 28.05.2007 15:25
Genri В этом можешь мне помочь?

Цитата:
Как можно заменить надпись клавиши 'OK' на 'Далее', каторое зявляеться в сообщении, в этому коду.

Цитата:function InitializeSetup(): Boolean;
begin
If RunTask('oodcnt.exe', false) then
begin
if MsgBox('Программа установки русификатора обнаружила, что программа "O&O Defrag Professional Edition",'#13'запушена в данный момент. Рекомендуется закрыть программу перед тем, как продлить.'#13#13
'Нажмите «Далее», программа установки закроет и не сохранит измененные настройки в программе.'#13#13
'Нажмите «Отмена», чтобы выйти из программы установки русификатора.', mbInformation, MB_OkCancel) = idOk then
begin
KillTask('oodcnt.exe');
Result := True;
end else
Exit;
end;
Result := True;



А также можно ли вставить текс названия программы из [Setup] AppName (что-то подобное на это)

Цитата: if MsgBox('Программа установки русификатора обнаружила, что программа '+ExpandConstant('{AppName}')+','#13'запушена в данный момент. Рекомендуется закрыть программу перед тем, как продлить


но так оно не работает


Автор: NightW0lf
Дата сообщения: 28.05.2007 15:27
Genri
И еще:
1. Как сделать чтобы здесь они тоже разбивались на группы.
2. И как сделать проверку выбранного элемента? т.е. доспустим выбран "Install Acrobat Reader" то в конце установки инсталлятор проверяет это условие если он выбран то тогда инсталируется.
Автор: Genri
Дата сообщения: 28.05.2007 15:48
maxdddca123 -- я так подозреваю, что у тебя IniStrings: TArrayOfString; объявлен два раза - локально в процедуре GetSectionNames и глобально. Соответственно в процедуре GetSectionNames заполняется локальный, а глобальный остается пустым и при обращении в функции NextButtonClick к IniStrings генерится ошибка, так как глобальный пустой.
Если так, то в процедуре GetSectionNames убери IniStrings: TArrayOfString;
Автор: maxdddca123
Дата сообщения: 28.05.2007 15:56
Genri
Неа, обьявил 1 раз глобально, повторений нет !
Автор: Yalos
Дата сообщения: 28.05.2007 16:30

Цитата:

Genri
[Run]
Filename: "attrib"; Parameters: " +S +H ""{app}\listing_*.html"""
так не работает ??


не проверял, работает мой вариант, мне этого достаточно, я на него тоже немало времени убил.


Цитата:

а в секции [Files] не пробовал добавить Attribs: hidden system ?

ну это ваще. пробовал конечно. но это не тот вариант - кроме html там еще лежит много чего, и если добавить атрибуты, это распространится на все файлы, а не этого не надо.
а добавлять по частям.... можно конечно, но мне показалось проще поставить атрибуты по маске, чем раздувать секцию [Files]
Автор: Genri
Дата сообщения: 28.05.2007 16:31
maxdddca123 -- в первом IniStrings: TArrayOfString; была в GetSectionNames, во втором уже нет. Пока ты будешь определяться, с каким кодом у тебя проблемы, я посмотрю вопросы других страждущих
Автор: maxdddca123
Дата сообщения: 28.05.2007 16:40
Genri
Я по твоему совету обьявил глобально что бы не думалось. Всё равно не работает...
Ведь проблема то не в этом скорее всего, раз и так и так не работает !
Автор: Genri
Дата сообщения: 28.05.2007 17:41
ZavadS
Цитата:
можно ли вставить текс названия программы из [Setup] AppName
-- можно примерно так:
#define MyApp 'My Program'
[Setup]
AppName={#MyApp}
...........................

MsgBox('Программа установки русификатора обнаружила, что программа ' + ExpandConstant('{#MyApp}') + ' запушена в данный момент'..............


Цитата:
можно заменить надпись клавиши 'OK' на 'Далее'
-- просто ОК на Далее думаю нельзя, но слегка изменить можно:

Код:
function InitializeSetup(): Boolean;
var
res: integer;
begin
Result:= True;
If RunTask('calc.exe', false) then
begin
res:= 10;
while (res = 10) and RunTask('calc.exe', false) do
res:= MsgBox('Программа установки русификатора обнаружила, что программа ' + ExpandConstant('{#MyApp}') + ','#13'запушена в данный момент. Рекомендуется закрыть программу перед тем, как продлить.'#13#13
'Завершите работу программы и нажмите «Повторить»'#13#13
'Нажмите «Далее», программа установки закроет и не сохранит измененные настройки в программе.'#13#13
'Нажмите «Отмена», чтобы выйти из программы установки русификатора.', mbInformation, 6);
Case res of
2: {Cancel}
begin
Result := False;
end;
11: {Continue}
begin
KillTask('calc.exe');
Result := True;
end;
end;
end;
end;
Автор: maxdddca123
Дата сообщения: 28.05.2007 17:58
Genri
Заработало, нашёл 1 косячок, не буду говорить чей
Только уж помоги мне плиз с кнопкной далее а....
http://forum.ru-board.com/topic.cgi?forum=5&topic=23235&start=483&limit=1&m=1#1
Там где внизу выделено жирным шрифтом, эта строчка не работает. Подскажи плиз как её заставить работать ???
Автор: Genri
Дата сообщения: 28.05.2007 18:03
NightW0lf
Цитата:
как сделать проверку выбранного элемента?
-- дык и в хелпе, и в моем примере есть проверка:
if Page.Values[0] then ... - для первого добавленного
if Page.Values[1] then ... - для второго добавленного и т.д.


Цитата:
Как сделать чтобы здесь они тоже разбивались на группы


Код:
var
Page: TInputOptionWizardPage;

procedure InitializeWizard();
begin
Page := CreateInputOptionPage(wpSelectTasks,
'License Information', 'Are you a registered user?',
'If you are a registered user, please check the box below, then click Next.',
False, False);

Page.AddEx('I am a registered user', 0, False);
Page.AddEx('Install Acrobat Reader', 1, False);
Page.AddEx('Install Documentation', 1, False);
end;
Автор: DuhaLab
Дата сообщения: 28.05.2007 19:38
Genri

пасиб, но вот как теперь в этот код:


Цитата:

var
Page: TInputOptionWizardPage;
IsRegisteredUser: Boolean;
procedure InitializeWizard();
begin
Page := CreateInputOptionPage(wpSelectTasks,
'License Information', 'Are you a registered user?',
'If you are a registered user, please check the box below, then click Next.',
False, False);

Page.Add('I am a registered user');
Page.Values[0] := False;
end;


запихать эти команды из [tasks]

Name: fixed; Description: Решение общих проблем:
Name: fixed/1; Description: Исправить ошибку page2chm v.2.7 RC1 с Opera v.9.10 и выше (проблема с сохранением страниц данным плагином)
Name: fixed/2; Description: Исправить кодировку русских символов в оболочке Windows (проблема с правильным отображением русских символов); Flags: unchecked
Name: tweak; Description: Небольшой твикер:
Name: tweak/find; Description: Использовать доступное поле множественного поиска или поле 'Поиск на странице' взамен диалогового окна 'Найти'; Flags: unchecked
Name: tweak/button; Description: Сокращать длинные названия кнопок и панелей в середине имени; Flags: unchecked
Name: tweak/IE; Description: Включить сохранение страниц на подобие IE (файл + папка) Если вы используете page2chm галку ставить не рекомендуется; Flags: unchecked
Name: tweak/RU; Description: Включить рекомендуемую кодировку текста в браузере Opera; Flags: unchecked
Автор: maxdddca123
Дата сообщения: 28.05.2007 20:41
Genri
Спасибо мегамозг ты наш !!! Всё получилось, шоп мы без тебя делали )))
Есть ещё лёгкий вопросик. Значт у меня в инсталляторе след файлы:
2 картинки бмп 150 и 10 кб, библиотека ISTask.dll, 66 кб, иконка 77 кб, итого в несжатом виде получаем 303 кб. Уровень сжатия везде стоит lzma\ultra. На выходе имею 553 кб !!!! Вопрос: откуда ??? Никак не могу понять.

Добавлено:
И ещё: наверно многие знают о так называемых билдах программы (цифры после версии), ну например при компиляции билд становится выше на опред число. Вот хотелось бы узнать, можно ли как то вставить в инно такие циферки, что бы при компиляции они автоматически увеличивались, типа у каждой инсталяшки свой уникальный билд. Наподобие времени компиляции смысл был бы

Добавлено:
И ещё: как вместо поиска конкретного файла
FileExists('A:\Asetup.ini')
осуществить поиск файла по маске
A:\Asetup*.ini
где * любое кол-во любых символов.
Автор: NightW0lf
Дата сообщения: 28.05.2007 21:35
Genri
Спасибо!
Автор: ZavadS
Дата сообщения: 29.05.2007 00:58
Genri Нужна и еще одна помощь на тему "как закрыть программу перед русификацией". А именно, нужно закрыть теперь системный процесс, который на данный момент работает (если это вообще возможно). Я имею
в виду программу дефрагментатор O&O Defrag. Предыдущий код (какой ты предоставил, за что тебе большое спасибо) работает, чтобы закрыть саму программу дефрагментатор, а системный процесс не закрывает. То есть что нужно. К началу русификации, нужно закрыть системный процесс, а в конце русификации, этот же системный процесс нужно опять запустить. И аналогично, при удалении русификатора, сначала закрыть, а затем опять запустить.

Автор: Genri
Дата сообщения: 29.05.2007 09:29
DuhaLab
Цитата:
как теперь в этот код:
......................................
запихать эти команды из [tasks]
-- а в чем конкретно проблемы? Что именно у тебя не получается?
Код:
var
Page: TInputOptionWizardPage;
IsRegisteredUser: Boolean;
procedure InitializeWizard();
begin
Page := CreateInputOptionPage(wpSelectTasks,
'License Information', 'Are you a registered user?',
'If you are a registered user, please check the box below, then click Next.',
False, False);

{0} Page.Add('Исправить ошибку page2chm v.2.7 RC1 с Opera v.9.10 и выше (проблема с сохранением страниц данным плагином)');
{1} Page.Add('Исправить кодировку русских символов в оболочке Windows (проблема с правильным отображением русских символов)');
{2} Page.Add('Использовать доступное поле множественного поиска или поле "Поиск на странице" взамен диалогового окна "Найти"');
{3} Page.Add('Сокращать длинные названия кнопок и панелей в середине имени');
{4} Page.Add('Включить сохранение страниц на подобие IE (файл + папка) Если вы используете page2chm галку ставить не рекомендуется');
{5} Page.Add('Включить рекомендуемую кодировку текста в браузере Opera');

Page.Values[0] := True;
end;
Автор: ZavadS
Дата сообщения: 29.05.2007 09:46
Genri
Да, запущенная служба программы дефрагментатора (служба O&O Defrag Agent).
Автор: Genri
Дата сообщения: 29.05.2007 10:25
ZavadS -- запуск/остановку службы в самом простом виде можно реализовать примерно так:

Код:
var
res: integer;

function InitializeSetup(): Boolean;
begin
Exec('net', 'stop W32Time', '', SW_HIDE, ewWaitUntilTerminated, res);
Result:= True;
end;

procedure DeinitializeSetup();
begin
Exec('net', 'start W32Time', '', SW_HIDE, ewWaitUntilTerminated, res);
end;
Автор: DuhaLab
Дата сообщения: 29.05.2007 14:11

Цитата:
var
Page: TInputOptionWizardPage;
IsRegisteredUser: Boolean;
procedure InitializeWizard();
begin
Page := CreateInputOptionPage(wpSelectTasks,
'License Information', 'Are you a registered user?',
'If you are a registered user, please check the box below, then click Next.',
False, False);

{0} Page.Add('Исправить ошибку page2chm v.2.7 RC1 с Opera v.9.10 и выше (проблема с сохранением страниц данным плагином)');
{1} Page.Add('Исправить кодировку русских символов в оболочке Windows (проблема с правильным отображением русских символов)');
{2} Page.Add('Использовать доступное поле множественного поиска или поле "Поиск на странице" взамен диалогового окна "Найти"');
{3} Page.Add('Сокращать длинные названия кнопок и панелей в середине имени');
{4} Page.Add('Включить сохранение страниц на подобие IE (файл + папка) Если вы используете page2chm галку ставить не рекомендуется');
{5} Page.Add('Включить рекомендуемую кодировку текста в браузере Opera');

Page.Values := True;
end;


1. вылетает ошибка: "invaluid number of parametrs" на эту строку "Page.Values := True;"
2. мне надо чтоб при выборе данных чекбоксов устанавливались данные из INI секции (как эти чекбоксы ассоциировать с данными из INI?)
Автор: Genri
Дата сообщения: 29.05.2007 14:19
DuhaLab -- сорри - очепятка. Должно быть:
Page.Values[0] := True;
... где [0] - номер добавленного чекбокса, а True - начальное выставление его отмеченным (по умолчанию все выключены)


Добавлено:

Цитата:
чтоб при выборе данных чекбоксов устанавливались данные из INI секции
-- а можно с примерами, не понял задачи.
Автор: maxdddca123
Дата сообщения: 29.05.2007 14:24
Genri
Спасибо

#define BuildNum Int(ReadIni(SourcePath + "\\BuildInfo.ini","Info","Build","0"))
Здесь тока 1 цифра, а как сделать, что бы менялось сразу несколько
Например
1,0,0,5479,254

что бы 5479,254 менялось с каждым разом. Я пробовал прописать, не получилось !
Автор: Genri
Дата сообщения: 29.05.2007 14:50
maxdddca123 -- можно и несколько, только смысл??
Была сборка 1.0.0.5479.254 (кстати, общепринято версия состоит не более чем из четырех частей)
Собрал очередной билд. Сколько должно стать? 1.0.0.5479.255 ? Или 1.0.0.5480.255 ?
Автор: DuhaLab
Дата сообщения: 29.05.2007 15:20
ну вот данные, всавляемые, если выбрать соответсвующую задачу из [Tasks]:

[INI]
Filename: {app}\opera6.ini; Section: User Prefs; Key: Save With Images Use Subfolder; String: 1; Tasks: tweak/IE; Flags: uninsdeleteentry
Filename: {app}\opera6.ini; Section: User Prefs; Key: Force Encoding; String: AUTODETECT-RU; Tasks: tweak/RU; Flags: uninsdeleteentry
Filename: {app}\opera6.ini; Section: User Prefs; Key: Title; Tasks: fixed/1; String: ; Flags: uninsdeleteentry
Filename: {app}\opera6.ini; Section: Multimedia; Key: Always load favicon; String: 1; Tasks: icons/3; Flags: uninsdeleteentry
Filename: {app}\opera6.ini; Section: User Prefs; Key: Use Integrated Search; String: 1; Tasks: tweak/find; Flags: uninsdeleteentry
Filename: {app}\opera6.ini; Section: User Prefs; Key: Ellipsis In Center; String: 1; Tasks: tweak/button; Flags: uninsdeleteentry

[Tasks]
Name: fixed; Description: Решение общих проблем:
Name: fixed/1; Description: Исправить ошибку page2chm v.2.7 RC1 с Opera v.9.10 и выше (проблема с сохранением страниц данным плагином)
Name: fixed/2; Description: Исправить кодировку русских символов в оболочке Windows (проблема с правильным отображением русских символов); Flags: unchecked
Name: tweak; Description: Небольшой твикер:
Name: tweak/find; Description: Использовать доступное поле множественного поиска или поле 'Поиск на странице' взамен диалогового окна 'Найти'; Flags: unchecked
Name: tweak/button; Description: Сокращать длинные названия кнопок и панелей в середине имени; Flags: unchecked
Name: tweak/IE; Description: Включить сохранение страниц на подобие IE (файл + папка) Если вы используете page2chm галку ставить не рекомендуется; Flags: unchecked
Name: tweak/RU; Description: Включить рекомендуемую кодировку текста в браузере Opera; Flags: unchecked
Name: tweak/Homepage; Description: Установить мой сайт 'www.duhalab.com' как домашнюю страницу по умолчанию в вашем браузере; Flags: unchecked

ну вот, мне надо чтоб дополнительно создать новую страницу и туда перенести эти задачи, чтоб при их выборе копировалось в ini файл, что выбрано (из чекбоксов)

твой код делает всё это как надо, но при выборе не копируются строки в ini файл, т.к. задачи на них не ассоциированны.
Автор: maxdddca123
Дата сообщения: 29.05.2007 15:24
Genri
Ну мне просто хочется побольше циферок. Люблю я их.
1.0.5479.254
1.0.5480.255
Вот так например как сделать ? (с 4-я частями).

Добавлено:
И ещё вопросик: как на страницу выбора каталога добавить произвольную кнопку ?
Без Create....Page можно реализовать ?
Автор: Genri
Дата сообщения: 29.05.2007 15:51
DuhaLab -- в секции [INI] вместо параметра Tasks: используй параметр Check: Т.е. выглядеть это будет примерно так (только откуда у тебя в примере Tasks: icons/3 я не знаю):

Код:
[Setup]
AppName=My Program
AppVerName=My Program v.1.2
DefaultDirName={pf}\My Program

[Files]
Source: "MyProg.ini"; DestDir: "{app}"

[INI]
Filename: {app}\opera6.ini; Section: User Prefs; Key: Save With Images Use Subfolder; String: 1; Check: CheckOption(4); Flags: uninsdeleteentry
Filename: {app}\opera6.ini; Section: User Prefs; Key: Force Encoding; String: AUTODETECT-RU; Check: CheckOption(5); Flags: uninsdeleteentry
Filename: {app}\opera6.ini; Section: User Prefs; Key: Title; Check: CheckOption(0); String: ; Flags: uninsdeleteentry
;Filename: {app}\opera6.ini; Section: Multimedia; Key: Always load favicon; String: 1; Tasks: icons/3; Flags: uninsdeleteentry
Filename: {app}\opera6.ini; Section: User Prefs; Key: Use Integrated Search; String: 1; Check: CheckOption(2); Flags: uninsdeleteentry
Filename: {app}\opera6.ini; Section: User Prefs; Key: Ellipsis In Center; String: 1; Check: CheckOption(3); Flags: uninsdeleteentry

[Kode] ; Естественно переименовать в Code
var
Page: TInputOptionWizardPage;
IsRegisteredUser: Boolean;
procedure InitializeWizard();
begin
Page := CreateInputOptionPage(wpSelectTasks,
'License Information', 'Are you a registered user?',
'If you are a registered user, please check the box below, then click Next.',
False, False);

{0} Page.Add('Исправить ошибку page2chm v.2.7 RC1 с Opera v.9.10 и выше (проблема с сохранением страниц данным плагином)');
{1} Page.Add('Исправить кодировку русских символов в оболочке Windows (проблема с правильным отображением русских символов)');
{2} Page.Add('Использовать доступное поле множественного поиска или поле "Поиск на странице" взамен диалогового окна "Найти"');
{3} Page.Add('Сокращать длинные названия кнопок и панелей в середине имени');
{4} Page.Add('Включить сохранение страниц на подобие IE (файл + папка) Если вы используете page2chm галку ставить не рекомендуется');
{5} Page.Add('Включить рекомендуемую кодировку текста в браузере Opera');

Page.Values[0] := True;
end;

function CheckOption(OptionNum: integer): Boolean;
begin
Result:= Page.Values[OptionNum];
end;
Автор: maxdddca123
Дата сообщения: 29.05.2007 16:05
Genri

Цитата:
-- любопытства ради - а как ты делал, что у тебя не получилось ?

Я так:
#define BuildNum Int(ReadIni(SourcePath + "\\BuildInfo.ini","Info","Build","0,1"))
#expr BuildNum = BuildNum + 0,1

Страницы: 1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768

Предыдущая тема: Mail.ru агент - вход не выполнен


Форум Ru-Board.club — поднят 15-09-2016 числа. Цель - сохранить наследие старого Ru-Board, истории становления российского интернета. Сделано для людей.