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

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

Автор: Artem_Butenko
Дата сообщения: 26.08.2008 15:13
Chanka

Извините, но ссылка на "ifolder" не работает, при попытке скачать файл по сгенерированной ссылке появляется сообщение, что ссылка на файл была получена на другом компьютере, как быть?

Victor_Dobrov

Пожалуйста, посмотрите мои вопросы на 38 странице, может то о чём я мечтаю можно реализовать в "Corona Skin"? Если это так, буду признателен за Вашу помощь!!!
Автор: Chanka
Дата сообщения: 26.08.2008 15:37
Artem_Butenko,

narod.ru
Автор: Diawer
Дата сообщения: 26.08.2008 16:31
Victor_Dobrov

Цитата:
innounp enhanced 0.23 build 2008-08-08 english


Не понимаю, всё равно не могу скачать, пишет ссылка неверна.


Добавлено:
Всё, скачал по старой, спасибо.

Добавлено:
Скажите, как можно убрать или изменить иконку на окнах справа ок кнопки "Пуск", то есть на "Панели задач".
Есть, тема что-бы убрать иконку в левом-верхнем углу окна исталлятора, мажет поможет.

[Code_]
procedure InitializeWizard();
begin
WizardForm.BorderStyle := bsDialog;
end;
Автор: Artem_Butenko
Дата сообщения: 26.08.2008 16:57
Chanka

Большое спасибо, теперь все скачал!!!

Автор: Victor_Dobrov
Дата сообщения: 27.08.2008 01:12
Artem_Butenko
Цитата:
Пожалуйста, посмотрите мои вопросы на 38 странице, может то о чём я мечтаю можно реализовать в "Corona Skin"?

Вряд-ли окна диалогов можно скинировать без использования ISSkin.dll или SkinCrafter.dll.
Стандартные диалоги можно только перехватить и заменить своими, например, как окно удаления неучтённых файлов в Короне.

Diawer
Цитата:
Скажите, как можно убрать или изменить иконку на окнах справа ок кнопки "Пуск", то есть на "Панели задач".

Вопрос не относится к теме об Inno Setup, попробуй спросить здесь.
Автор: nOobCrafter
Дата сообщения: 27.08.2008 09:34
Все спасибо заработало все!!
[more=Код]var
AddCheckBoxExist:boolean;

Procedure InitializeWizard;
begin
AddCheckBoxExist:=False;
end;

function BackButtonClick(CurPageID: Integer): Boolean;
begin
if CurPageID=wpSelectTasks then AddCheckBoxExist:=False;
Result:=True;
end;

procedure CurPageChanged(CurPageID: Integer);
Begin
if DirExists('C:\Rovalant') then begin
if (CurPageID = wpSelectTasks) and not AddCheckBoxExist then begin
WizardForm.TasksList.AddCheckBox('1', '', 0, True, True, True, True, nil)
WizardForm.TasksList.AddCheckBox('1.1', '', 1, True, True, False, True, nil)
WizardForm.TasksList.AddCheckBox('1.2', '', 1, True, True, True, True, nil)
WizardForm.TasksList.AddCheckBox('1.3', '', 1, True, True, True, True, nil)
WizardForm.TasksList.AddCheckBox('1.4', '', 1, True, True, True, True, nil)
WizardForm.TasksList.AddCheckBox('1.5', '', 1, True, True, True, True, nil)
WizardForm.TasksList.AddCheckBox('1.6', '', 1, True, True, True, True, nil)
WizardForm.TasksList.AddCheckBox('1.7', '', 1, True, True, True, True, nil)
WizardForm.TasksList.AddCheckBox('1.8', '', 1, True, True, True, True, nil)
    end;
AddCheckBoxExist:=True;
end;
end;

procedure CurStepChanged(CurStep: TSetupStep);
begin
if DirExists('C:\Rovalant') then begin // добавил
if CurStep = ssInstall then begin
if WizardForm.TasksList.Checked[5] = True then
begin

end;

if WizardForm.TasksList.Checked[6] = True then
begin

end;

if WizardForm.TasksList.Checked[7] = True then
begin

end;

if WizardForm.TasksList.Checked[8] = True then
begin

end;

if WizardForm.TasksList.Checked[9] = True then
begin

end;

if WizardForm.TasksList.Checked[10] = True then
begin

end;

if WizardForm.TasksList.Checked[11] = True then
begin

end;

if WizardForm.TasksList.Checked[12] = True then
begin

end;
end;
end;
end;[/more]
Странно проверил с чистого листа и все заработало... мистика епта

Кстати возник вопрос, как можно в файл лога добавить еще и версию программы?
Вот [more=код]Function InitializeSetup: Boolean;
    begin
str:= #13#10 + '=================' + #13#10 +
'Установка начата : ' + GetDateTimeString('dd/mm/yyyy hh:nn:ss', '-', ':');
str:= str + #13#10 + 'Компьютер/Пользователь : ' +
GetComputerNameString + '/' + GetUserNameString;
SaveStringToFile('C:\Rovalant\log.txt', str, True);
SaveStringToFile('C:\Windows\Rovalant_log.txt', str, True);
end;

procedure DeinitializeSetup();
begin
str:= #13#10 + 'Установка закончена : ' +
GetDateTimeString('dd/mm/yyyy hh:nn:ss', '-', ':');
SaveStringToFile('C:\Rovalant\log.txt', str, True);
SaveStringToFile('C:\Windows\Rovalant_log.txt', str, True);
end; [/more] лога
Автор: bull3t
Дата сообщения: 27.08.2008 17:53
Подскажите пожалуйста, как обойти проблему с кодировкой?
[more]
я записываю в .bat файл с помощью ф-ии SaveStringToFile путь к файлу. и, если в пути встречаются русские символы(ну типа "Рабочий стол" и т.п.) то, естественно, он их не находит.

Как быть?
[/more]
Автор: Diawer
Дата сообщения: 27.08.2008 19:04
В Inno если он запущен, ещё раз попробовать его установить выдаётся сообщение "Обнаружен запущенный экземпляр",
в языковых модулях есть:
; *** Startup error messages
SetupAppRunningError=
UninstallAppRunningError=
это делается стандартными средствами или через [Code_] идёт?
Автор: Artem_Butenko
Дата сообщения: 27.08.2008 19:14
Sampron

Извиняюсь, что повторяю вопрос уже много раз, но Вы моя последняя надежда на помощь. Victor_Dobrov объяснил, что скинировать окна сообщений в Inno Setup, без использования сторонних библиотек, невозможно. Очень жаль. В Вашем скине "Vista Lite Skin" очень интересно скинируются системные кнопки (свернуть, закрыть) и вся рабочая панель окна. Подскажите, а можно ли таким образом скинировать чек-боксы и радио-баттоны? И, всё-таки, может есть вариант наложения битмапа на диалоговые окна и их кнопки (без использования сторонних .dll). Буду очень благодарен Вашей помощи!
Автор: nOobCrafter
Дата сообщения: 28.08.2008 10:23
Господа кто может помоч с вопросом по логу?.. Надо добавить запись версии софта.. Код в сообщении выше.
Автор: SotM
Дата сообщения: 28.08.2008 10:29
Diawer

Цитата:
это делается стандартными средствами или через [Code_] идёт?

Вопрос не ясен. Делается что? Сам перечитай свой пост и перефразируй.

nOobCrafter
Дык, а каким образом у тебя изначально задана версия софта? Где код сам? Или тут все должны полностью за тебя всё придумать?
Автор: Artem_Butenko
Дата сообщения: 28.08.2008 12:24
Victor_Dobrov

Недавно, в инсталляторе одного оффлайнового браузера, видел интересный эффект, где текстуры кнопок обновлялись постепенно (медленно и красиво). Можно ли этот эффект реализовать в текущей версии Inno Setup? Ещё хотел спросить, как Вы выводите общие сведение о системе на фоновый рисунок в инсталляторе "Total Commander Expert"? Если можно, покажите пожалуйста соответствующий скрипт (как я понимаю это модифицированный вариант "Corona Skin")
Автор: Diawer
Дата сообщения: 28.08.2008 13:38
SotM

Стандартными – это значит, каким нибудь флагом или одной командой допустим в секции [Setup_],
или это надо прописывать в секции [Code_]?
Автор: SotM
Дата сообщения: 28.08.2008 13:50
Diawer
Ты так и не ответил на мой вопрос. Я не спрашивал стандартными или не стандартными, твоя формулировка вопроса не правильная.
Что именно "делается"? Выводится конкретное сообщение или что?
К тому же, ты не написал зачем это тебе нужно знать. Предыстория твоего вопроса должна желательно присутствовать.
Автор: nOobCrafter
Дата сообщения: 28.08.2008 17:02
"VersionInfoVersion=2.82"
Автор: ComradG
Дата сообщения: 28.08.2008 17:59
Сегодня столкнулся с проблемой технического характера: Memo ни в какую не хочет грузить текстовый файл. У кого-нибудь такое наблюдалось? Если да, то дайте знать. Тем более, что весь скрипт написан от и до правильно (как показывает отладчик). Да, по поводу все того же NSIS. Имитировать его возможно и без всяких плагинов, библиотек и прочего мусора. В скрипте осталось кое-чего подправить-пока наблюдаются баги с ComboBox и отображением комментариев к файлам. Кстати, о программе, которую я писал. Ее дальнейшей разработкой заинтересовалась сама GmbH, в которой я на данный момент работаю. Так что, извиняйте.
Автор: RaP1D
Дата сообщения: 28.08.2008 18:20
Помогите, пожалуйста, реализовать следущее...

Есть 3 компонета:

Код:
[Components]
Name: "AAA"; Description: "AAA"; Flags: fixed; Types: full compact custom
Name: "CompOne"; Description: "{X}"; Types: custom full
Name: "CompTwo"; Description: "{Y}"; Types: custom full
Автор: Diawer
Дата сообщения: 28.08.2008 19:00
SotM

Цитата:
Что именно "делается"? Выводится конкретное сообщение или что?
, именно это я и имел в виду, что бы выводилось такое же сообщение "Обнаружен запущенный экземпляр", при попытке повторной установки при уже запущенной программе (к пр. Inno Setup). + был вопрос можно это сделать определённой командой которую поймёт Инно, или принудительно через Код.

Уже понятно, что надо писать код, наверняка эта тема уже поднималась, я поискал – не нашёл.
По этому я спрашиваю на форуме, может кто знает?

Автор: Victor_Dobrov
Дата сообщения: 28.08.2008 19:47
Artem_Butenko
Цитата:
в инсталляторе одного оффлайнового браузера, видел интересный эффект, где текстуры кнопок обновлялись постепенно (медленно и красиво). Можно ли этот эффект реализовать в текущей версии Inno Setup?

Предпочитаю отключать украшательства Windows, замедляющие работу интерфейса, так что обсуждайте это без меня.

Цитата:
как Вы выводите общие сведение о системе на фоновый рисунок в инсталляторе "Total Commander Expert"? Если можно, покажите пожалуйста соответствующий скрипт (как я понимаю это модифицированный вариант "Corona Skin")

Я же писал недавно, что скрипт не закончен, не доработаны MediaPlayer, ComponentsInfo и многое другое...
Но если не терпится, то вот текущий Corona Skin & Check System Requirements, в который добавлено следующее:

Ключ SelCompAtFirst меняет страницы wpSelectDir и wpSelectComponents, сначала отображаются компоненты.
Ключ ComponentsInfo включает всплывающие подсказки при наведении курсора на строку списка компонентов.
Ключ ShowSysInfo выводит на фоновое окно информацию о системе и результаты проверки мин. требований.
Ключ NewIconsPage улучшит страницу выбора программной группы и добавит выбор текущего пользователя.
На странице wpReady отображается информация о выборе иконок и результаты проверки мин. требований.
Добавлена общая функция FolderIcon(Папка, Иконка, Номер), которая назначает значок на папку.
Исправлены недоработки теста системы, значения минимальных требований выводятся в подсказках.
Теперь инсталлятор кроме ключа реестра может проверять наличие файла и его версию. Синтаксис:
NeedFile:= 'Полный путь к файлу<|Версия файла>'. (путь может включать константы. Версию можно указывать не целиком.)
NeedRegKey:= 'Раздел реестра<, Параметр раздела>'. (можно опустить HKLM: т.е. HKLM\Software\... аналогично Software\...)
Чтобы вывести особые сообщения при наличии и отсутствии файла/ключа реестра, укажите текст в NeedFileOK, NeedFileNO, NeedRegKeyOK, NeedRegKeyNO. Если эти ключи отсутствуют, то используются встроенные сообщения.
Процедура RegBackup('Раздел') резервирует раздел реестра. При деинсталляции все записи из резервной копии восстанавливаются автоматически.
Автоопределение версии компилятора - стандартная или расширенная китайская сборка Inno Setup.
Если используется китайская сборка, но ключ ComponentsListTVStyle не указан, он выставляется в True.
Автор: Artem_Butenko
Дата сообщения: 28.08.2008 23:43
Товарищи. У меня такой вопрос, есть скрипт для загрузки файлов с веб-узла (см. инсталлятор IS Preprocessor). Можно ли интегрировать этот код с таким требованием: если лежащая рядом с исполнительным файлом инсталлятора папка "Update" пуста, будет происходить загрузка необходимых файлов из интернет; если в данной папке имеются определенные файлы, то они копируются оттуда (при этом эмулируется интерфейс окна загрузки файлов из сети). Если у кого-нибудь есть вариант, как написать подобный код, буду рад Вашей помощи. Самому не справится, к сожалению не хватает знаний.
Автор: nOobCrafter
Дата сообщения: 29.08.2008 09:36
Так может кто ответить по поводу записи версии в лог?..
Вот код лога:

Код: Function InitializeSetup: Boolean;
begin
str:= #13#10 + '=================' + #13#10 +
'Установка начата : ' + GetDateTimeString('dd/mm/yyyy hh:nn:ss', '-', ':');
str:= str + #13#10 + 'Компьютер/Пользователь : ' +
GetComputerNameString + '/' + GetUserNameString;
SaveStringToFile('C:\Windows\log.txt', str, True);
end;

procedure DeinitializeSetup();
begin
str:= #13#10 + 'Установка закончена : ' +
GetDateTimeString('dd/mm/yyyy hh:nn:ss', '-', ':');
SaveStringToFile('C:\Windows\og.txt', str, True);
end;
Автор: KurtWagner
Дата сообщения: 29.08.2008 13:25
[more=SotM=more]
Run~Parametrs- Мне нужно распаковать один exe-шник Universal UXTheme Patcher 1.1.exe
Не знаю как заставить его установиться автоматический
Как заставить инсталлер-а пропускать ощибки типа там где (прервать,повторить,пропустить)
Меня это уже начинает бесить... Flags: onlyifdestfileexists или replacesameversion и т.д.
не помогают! Плиз помогите заранее спасибо!

Добавлено:
[more=SotM=more]
Run~Parametrs- Мне нужно распаковать один exe-шник Universal UXTheme Patcher 1.1.exe
Не знаю как заставить его установиться автоматический
Как заставить инсталлер-а пропускать ощибки типа там где (прервать,повторить,пропустить)
Меня это уже начинает бесить... Flags: onlyifdestfileexists или replacesameversion и т.д.
не помогают! Плиз помогите заранее спасибо!
Автор: SotM
Дата сообщения: 29.08.2008 13:46
KurtWagner
Ну и? Ээээ, не понятно всё еще. Этот "Universal UXTheme Patcher 1.1.exe" запакован в твой установщик и является самораспаковывающимся архивом или же обычным exe'шником? Или он не в установщике находится?

Цитата:
установиться автоматический

Что значит установиться автоматически?

И зачем инсталлятор заставлять пропускать ошибки?! Смысла в этом не вижу.
1. Ты бы код выложил
2. Более детально и пошагово объяснил цель и т.д., а то твои обрывочные объяснения (с ошибками) не дают полной картины.
3. Я вообще не знаю что это за "Universal UXTheme Patcher 1.1.exe". Искать в инете описание оного зверя не я должен, а ты снабжать более полной информацией, дабы сыкономить время другим.
Автор: Artem_Butenko
Дата сообщения: 29.08.2008 16:23
Друзья, извините, что повторяю вопрос, но данная проблема, насколько мне известно, ещё не поднималась. Можно ли заставить Inno Setup копировать файлы с внешнего источника. Поясняю, перед страницей выбора директории установки выводилось бы окно, в котором предлагалось откуда (папка и файлы на HDD или папка и файлы на гибком диске) инсталлятору копировать необходимые файлы. А ещё интереснее было бы совместить это окно со страницей выбора директории установки (2 кнопки "Обзор...", одна из которых открывает диалоговое окно выбора директории установки, а другая - диалоговое окно выбора источника с которого будет происходить копирование). При этом в случае отсутствия в конкретной папке необходимых для копирования файлов, выводилось бы соотвествующее сообщение. Надеюсь вопрос изложен понятно, он немного перекликается с моим предыдущим вопросом (см. стр. 40), если у кого есть опыт реализации подобных действий в скрипте, с радостью приму Вашу помощь!!!

Добавлено:
Вот написал необходимую форму - [more=см. скрипт.]
[_Code]
var
Panel1: TPanel;
Button1: TButton;
Edit1: TEdit;
NewStaticText1: TNewStaticText;
Panel2: TPanel;
Button2: TButton;
Edit2: TEdit;
NewStaticText3: TNewStaticText;
NewStaticText2: TNewStaticText;
NewStaticText4: TNewStaticText;
NewStaticText5: TNewStaticText;
NewStaticText6: TNewStaticText;

{ MyForm_Activate }

procedure MyForm_Activate(Page: TWizardPage);
begin
// enter code here...
end;

{ MyForm_ShouldSkipPage }

function MyForm_ShouldSkipPage(Page: TWizardPage): Boolean;
begin
Result := False;
end;

{ MyForm_BackButtonClick }

function MyForm_BackButtonClick(Page: TWizardPage): Boolean;
begin
Result := True;
end;

{ MyForm_NextkButtonClick }

function MyForm_NextButtonClick(Page: TWizardPage): Boolean;
begin
Result := True;
end;

{ MyForm_CancelButtonClick }

procedure MyForm_CancelButtonClick(Page: TWizardPage; var Cancel, Confirm: Boolean);
begin
// enter code here...
end;

{ MyForm_CreatePage }

function MyForm_CreatePage(PreviousPageId: Integer): Integer;
var
Page: TWizardPage;
begin
Page := CreateCustomPage(
PreviousPageId,
ExpandConstant('{cm:MyForm_Caption}'),
ExpandConstant('{cm:MyForm_Description}')
);

{ Panel1 }
Panel1 := TPanel.Create(Page);
with Panel1 do
begin
Parent := Page.Surface;
Left := ScaleX(8);
Top := ScaleY(160);
Width := ScaleX(393);
Height := ScaleY(49);
BevelInner := bvLowered;
TabOrder := 0;
end;

{ Button1 }
Button1 := TButton.Create(Page);
with Button1 do
begin
Parent := Panel1;
Caption := ExpandConstant('{cm:MyForm_Button1_Caption0}');
Left := ScaleX(304);
Top := ScaleY(17);
Width := ScaleX(77);
Height := ScaleY(23);
TabOrder := 0;
end;

{ Edit1 }
Edit1 := TEdit.Create(Page);
with Edit1 do
begin
Parent := Panel1;
Left := ScaleX(8);
Top := ScaleY(18);
Width := ScaleX(291);
Height := ScaleY(21);
TabOrder := 1;
Text := ExpandConstant('{cm:MyForm_Edit1_Text0}');
end;

{ NewStaticText1 }
NewStaticText1 := TNewStaticText.Create(Page);
with NewStaticText1 do
begin
Parent := Page.Surface;
Caption := ExpandConstant('{cm:MyForm_NewStaticText1_Caption0}');
Left := ScaleX(16);
Top := ScaleY(153);
Width := ScaleX(104);
Height := ScaleY(14);
Font.Color := 16711680;
Font.Height := ScaleY(-11);
Font.Name := 'Tahoma';
ParentFont := False;
TabOrder := 1;
end;

{ Panel2 }
Panel2 := TPanel.Create(Page);
with Panel2 do
begin
Parent := Page.Surface;
Left := ScaleX(8);
Top := ScaleY(56);
Width := ScaleX(393);
Height := ScaleY(49);
BevelInner := bvLowered;
TabOrder := 2;
end;

{ Button2 }
Button2 := TButton.Create(Page);
with Button2 do
begin
Parent := Panel2;
Caption := ExpandConstant('{cm:MyForm_Button2_Caption0}');
Left := ScaleX(304);
Top := ScaleY(17);
Width := ScaleX(77);
Height := ScaleY(23);
TabOrder := 0;
end;

{ Edit2 }
Edit2 := TEdit.Create(Page);
with Edit2 do
begin
Parent := Panel2;
Left := ScaleX(8);
Top := ScaleY(18);
Width := ScaleX(291);
Height := ScaleY(21);
TabOrder := 1;
Text := ExpandConstant('{cm:MyForm_Edit2_Text0}');
end;

{ NewStaticText3 }
NewStaticText3 := TNewStaticText.Create(Page);
with NewStaticText3 do
begin
Parent := Page.Surface;
Caption := ExpandConstant('{cm:MyForm_NewStaticText3_Caption0}');
Left := ScaleX(16);
Top := ScaleY(49);
Width := ScaleX(119);
Height := ScaleY(14);
Font.Color := 16711680;
Font.Height := ScaleY(-11);
Font.Name := 'Tahoma';
ParentFont := False;
TabOrder := 3;
end;

{ NewStaticText2 }
NewStaticText2 := TNewStaticText.Create(Page);
with NewStaticText2 do
begin
Parent := Page.Surface;
Caption := ExpandConstant('{cm:MyForm_NewStaticText2_Caption0}');
Left := ScaleX(16);
Top := ScaleY(128);
Width := ScaleX(311);
Height := ScaleY(17);
Font.Color := 32768;
Font.Height := ScaleY(-11);
Font.Name := 'Comic Sans MS';
Font.Style := [fsBold];
ParentFont := False;
TabOrder := 4;
end;

{ NewStaticText4 }
NewStaticText4 := TNewStaticText.Create(Page);
with NewStaticText4 do
begin
Parent := Page.Surface;
Caption := ExpandConstant('{cm:MyForm_NewStaticText4_Caption0}');
Left := ScaleX(16);
Top := ScaleY(24);
Width := ScaleX(295);
Height := ScaleY(17);
Font.Color := 32768;
Font.Height := ScaleY(-11);
Font.Name := 'Comic Sans MS';
Font.Style := [fsBold];
ParentFont := False;
TabOrder := 5;
end;

{ NewStaticText5 }
NewStaticText5 := TNewStaticText.Create(Page);
with NewStaticText5 do
begin
Parent := Page.Surface;
Caption := ExpandConstant('{cm:MyForm_NewStaticText5_Caption0}');
Left := ScaleX(8);
Top := ScaleY(216);
Width := ScaleX(365);
Height := ScaleY(14);
TabOrder := 6;
end;

{ NewStaticText6 }
NewStaticText6 := TNewStaticText.Create(Page);
with NewStaticText6 do
begin
Parent := Page.Surface;
Caption := ExpandConstant('{cm:MyForm_NewStaticText6_Caption0}');
Left := ScaleX(16);
Top := ScaleY(2);
Width := ScaleX(217);
Height := ScaleY(18);
Font.Color := 128;
Font.Height := ScaleY(-12);
Font.Name := 'Arial Black';
ParentFont := False;
TabOrder := 7;
end;

with Page do
begin
OnActivate := @MyForm_Activate;
OnShouldSkipPage := @MyForm_ShouldSkipPage;
OnBackButtonClick := @MyForm_BackButtonClick;
OnNextButtonClick := @MyForm_NextButtonClick;
OnCancelButtonClick := @MyForm_CancelButtonClick;
end;

Result := Page.ID;
end;

{ MyForm_InitializeWizard }

procedure InitializeWizard();
begin
MyForm_CreatePage(wpWelcome);
end;

[CustomMessages]
MyForm_Caption=Выбор папки установки
MyForm_Description=В какую папку Вы хотите установить [name]?
MyForm_Button1_Caption0=Обзор...
MyForm_Edit1_Text0=
MyForm_NewStaticText1_Caption0= Папка назначения:
MyForm_Button2_Caption0=Обзор...
MyForm_Edit2_Text0=
MyForm_NewStaticText3_Caption0= Папка с исходниками:
MyForm_NewStaticText2_Caption0=Программа скопирует исходники в следующую папку:
MyForm_NewStaticText4_Caption0=Произвести поиск исходников в следующем месте:
MyForm_NewStaticText5_Caption0=Требуется как минимум [mb] Мб свободного дискового пространства.
MyForm_NewStaticText6_Caption0=Восстановление полных путей
[/more]
Правда как заменить данной формой стандартное окно выбора каталога установки и реализовать все необходимые процедуры и функции я не знаю. Поэтому искренне надеюсь на Вашу помощь!

Добавлено:
И ещё ребята, подскажите где можно найти коды исходных (стандартных) страниц Inno Setup или м.б. файлы форм этих страниц для ISFD. Просто гложит познавательный интерес!
Автор: Genri
Дата сообщения: 29.08.2008 19:10
Artem_Butenko

Цитата:
Можно ли заставить Inno Setup копировать файлы с внешнего источника. Поясняю, перед страницей выбора директории установки выводилось бы окно, в котором предлагалось откуда (папка и файлы на HDD или папка и файлы на гибком диске) инсталлятору копировать необходимые файлы.
-- [more][no]
[Setup]
AppName=My Program
AppVerName=My Program v.1.2
DirExistsWarning=no
DefaultDirName={pf}\My Program

[Files]
Source: {code:SrcDir}\*; DestDir: {app}; Flags: external

[Code]
var
Page: TInputDirWizardPage;
DataDir: String;

function SrcDir(Param: String): String;
begin
Result := DataDir;
end;

procedure InitializeWizard();
begin
Page := CreateInputDirPage(wpUserInfo,
'Select Data Location', 'Where should data files be stored?',
'Data files will be stored in the following folder.'#13#10#13#10 +
'To continue, click Next. If you would like to select a different folder, click Browse.',
False, '');
Page.Add('');
Page.Values[0] := ExpandConstant('{userappdata}\My Company\My Program');
end;

function NextButtonClick(CurPageID: Integer): Boolean;
begin
Result:= True;
if CurPageID = Page.ID then
if Not DirExists(Page.Values[0]) then
Result:= False
else
DataDir := Page.Values[0];
end; [/no][/more]
Автор: Kindly
Дата сообщения: 29.08.2008 20:08
Genri - обновилась Bass.dll до версии 2.4 [ http://uk.un4seen.com/files/bass24.zip ], теперь в ней указываются 64 битные параметры, Inno ругается. Можно ли адаптировать под новую версию?

Автор: Diawer
Дата сообщения: 29.08.2008 21:57
В "Руководство по расширенным возможностям Inno Setup 5.1", есть код где перед процессом установки программа не позволит инсталляцию файлов, если она запущена, но опредление по "классу окна" вещь не конкретная, может кто знает как сделать его (определение) по имени запущенного файла (*.exe).

function NextButtonClick(CurPage: Integer): Boolean;
var
s:string;
h:Longint;
begin
Result:=True;
If CurPage=10
then
begin
h:=FindWindowByClassName('My-Program-WINDOW'); //Указываемый класс окна (многие приложения могут иметь одинаковый класс!)
If h<>0 then
begin
s:='Обнаружен запущенный экземпляр программы My_Program!' #13#13'Для продолжения установки требуется закрыть его.';
MsgBox(s, mbError, mb_Ok);
Result:= False
end;
end;
end;
Автор: Unc1e
Дата сообщения: 29.08.2008 22:17
Diawer, а "Реагирование инсталлятора на процесс запущенного приложения и его завершение" разве не то?
Автор: Artem_Butenko
Дата сообщения: 29.08.2008 22:53
Genri

Спасибо Вам за помощь. Пожалуйста подскажите, а можно ли в данный код внедрить проверку присутствия определенных файлов и папок в корневой директории исходников (на жестком или гибком диске). Интересно было бы рассмотреть два варианта проверки:
а) простая проверка присутствия папок и файлов по их имени;
б) комбинированная проверка - по имени и размеру файлов и папок исходников.
И можно ли совместить (очень важно!!!) данную страницу (выбора директории исходников) со страницей выбора директории установки.
Если это реально осуществить средствами Inno Setup, то пожалуйста помогите довести мою идею до логического завершения!
Автор: Victor_Dobrov
Дата сообщения: 30.08.2008 02:02
Kindly
Цитата:
Можно ли адаптировать Inno Setup под новую версию Bass.dll 2.4?

В bass 2.4 нет ничего кардинально нового, для проигрывания множества музыкальных форматов вполне достаточно и версии 2.0.

Страницы: 12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667686970

Предыдущая тема: Презентация


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