|
Внимание, важное сообщение: Дорогие Друзья!
В ноябре далекого 2001 года мы решили создать сайт и форум, которые смогут помочь как начинающим, так и продвинутым пользователям разобраться в операционных системах. В 2004-2006г наш проект был одним из самых крупных ИТ ресурсов в рунете, на пике нас посещало более 300 000 человек в день! Наша документация по службам Windows и автоматической установке помогла огромному количеству пользователей и сисадминов. Мы с уверенностью можем сказать, что внесли большой вклад в развитие ИТ сообщества рунета. Но... время меняются, приоритеты тоже. И, к сожалению, пришло время сказать До встречи! После долгих дискуссий было принято решение закрыть наш проект. 1 августа форум переводится в режим Только чтение, а в начале сентября мы переведем рубильник в положение Выключен Огромное спасибо за эти 24 года, это было незабываемое приключение. Сказать спасибо и поделиться своей историей можно в данной теме. С уважением, ваш призрачный админ, BigMac... |
|
| Компьютерный форум OSzone.net » Автоматическая установка Windows » Автоматическая установка приложений » Скрипты Inno Setup. Помощь и советы [часть 9] |
|
|
Скрипты Inno Setup. Помощь и советы [часть 9]
|
|
Ветеран Сообщения: 1274 |
Внимание! Данная тема предназначена только для обсуждения написания скриптов!
Остальные вопросы, а также последние версии компилятора в теме Inno Setup. Прочие вопросы. Показать/скрыть: Справка, руководство, примеры:
Показать/скрыть: Ссылки на примеры скриптов:
Показать/скрыть: Дополнительные программы для Inno Setup:
Предыдущие ветки обсуждения по ссылкам ниже и в прикреплённых архивах: Скрипты Inno Setup. Помощь и советы [часть 6] | Скрипты Inno Setup. Помощь и советы [часть 6].7z Скрипты Inno Setup. Помощь и советы [часть 7] | Скрипты Inno Setup. Помощь и советы [часть 7].7z Скрипты Inno Setup. Помощь и советы [часть 8] | Скрипты Inno Setup. Помощь и советы [часть 8].7z |
|
|
Отправлено: 16:09, 04-04-2018 |
|
Старожил Сообщения: 440
|
Профиль | Сайт | Отправить PM | Цитировать Цитата ErikPshat:
Цитата ErikPshat:
|
||
|
------- Отправлено: 16:33, 20-11-2018 | #151 |
|
Пользователь Сообщения: 54
|
Профиль | Отправить PM | Цитировать nik1967, в ообщем я сделал вот такую реализацию своей идеи, можете заценить и указать на ошибки:
Готовый примар реализации чекбоксов на странице выбора папки:
#define Name "MyAppName"
#define Version "1.0 Build 1234"
[Setup]
AppName={#Name}
AppVersion={#Version}
DefaultDirName={src}
;[Files]
;Source: "{app}\4GB.txt"; DestDir: "{app}"; Check: Check0();
;Source: "{app}\2GB.txt"; DestDir: "{app}"; Check: Check1();
;Source: "{app}\NoLimit.txt"; DestDir: "{app}"; Check: Check2();
;Source: "{app}\Signed.txt"; DestDir: "{app}"; Check: Check3();
[Languages]
Name: ru; MessagesFile: compiler:Languages\Russian.isl
[Messages]
ru.WizardSelectDir=Выбор папки для разделения
ru.SelectDirDesc=Какую папку вы хотите разделить на части и упаковать их в PKG?
ru.SelectDirLabel3=Программа разделит выбранную папку на части по размерам,%nв зависимости от сделанного вами выбора в чекбоксах.
ru.SelectDirBrowseLabel=Для выбора папки, которую вам необходимо разделить, нажмите «Обзор».
ru.DiskSpaceMBLabel=Требуется как минимум 2 или 4 ГБ свободного дискового пространства.
[CustomMessages]
ru.Check4GB=Разделить папку на части по 4 Гигабайта
ru.Check2GB=Разделить папку на части по 2 Гигабайта
ru.CheckNot=Не разделять папку, упаковать целиком
ru.CheckSig=Подписать PKG (создать "retail_signed.pkg")
[ Code ]
var
Check: array [0..3] of TCheckBox;
function Check0(): boolean; begin Result := Check[0].Checked; end;
function Check1(): boolean; begin Result := Check[1].Checked; end;
function Check2(): boolean; begin Result := Check[2].Checked; end;
function Check3(): boolean; begin Result := Check[3].Checked; end;
procedure GetCheck(Sender: TObject);
begin
case sender of
Check[0]: if Check[0].Checked then begin Check[1].Checked := False; Check[2].Checked := False; end;
Check[1]: if Check[1].Checked then begin Check[2].Checked := False; Check[0].Checked := False; end;
Check[2]: if Check[2].Checked then begin Check[1].Checked := False; Check[0].Checked := False; end;
end;
end;
procedure InitializeWizard();
begin
Check[0] := TCheckBox.Create(WizardForm);
with Check[0] do
begin
Parent := WizardForm.SelectDirPage;
Checked := True;
Left:= ScaleX(4);
Top := ScaleY(115);
Width:=ScaleX(280);
OnClick := @GetCheck;
// Будет 4GB.txt, если имеется в них необходимость, нужно раскомментировать их в секции [Files]
Caption := ExpandConstant(' {cm:Check4GB}');
end;
Check[1] := TCheckBox.Create(WizardForm);
with Check[1] do
begin
Parent := WizardForm.SelectDirPage;
Left:= ScaleX(4);
Top := ScaleY(135);
Width:=ScaleX(280);
OnClick := @GetCheck;
// Будет 2GB.txt, если имеется в них необходимость, нужно раскомментировать их в секции [Files]
Caption := ExpandConstant(' {cm:Check2GB}');
end;
Check[2] := TCheckBox.Create(WizardForm);
with Check[2] do
begin
Parent := WizardForm.SelectDirPage;
Left:= ScaleX(4);
Top := ScaleY(155);
Width:=ScaleX(350);
OnClick := @GetCheck;
// Будет NoLimit.txt, если имеется в них необходимость, нужно раскомментировать их в секции [Files]
Caption := ExpandConstant(' {cm:CheckNot}');
end;
Check[3] := TCheckBox.Create(WizardForm);
with Check[3] do
begin
Parent := WizardForm.SelectDirPage;
Left:= ScaleX(4);
Top := ScaleY(185);
Width:=ScaleX(280);
// Будет Signed.txt, если имеется в них необходимость, нужно раскомментировать их в секции [Files]
Caption := ExpandConstant(' {cm:CheckSig}');
end;
end;
Только какие потом отлавливать переменные я пока не придумал )))
|
|
Отправлено: 19:52, 20-11-2018 | #152 |
|
Ветеран Сообщения: 27449
|
Профиль | Отправить PM | Цитировать Цитата ErikPshat:
|
|
|
Отправлено: 19:56, 20-11-2018 | #153 |
|
Пользователь Сообщения: 98
|
Профиль | Отправить PM | Цитировать Здравствуйте всем! Господа-товарищи, я так понимаю, в таком виде
Скрытый текст
[Code]
var
Check: array [0..3] of TCheckBox;
function Check_0(): Boolean;
begin
Result:= Check[0].Checked;
end;
function Check_1(): Boolean;
begin
Result:= Check[1].Checked;
end;
function Check_2(): Boolean;
begin
Result:= Check[2].Checked;
end;
function Check_3(): Boolean;
begin
Result:= Check[3].Checked;
end;
procedure Check0(Sender: TObject);
begin
if Check[0].Checked then begin
Check[1].Checked:= False;
Check[2].Checked:= False;
Check[3].Checked:= False;
end;
if (Check[0].Checked = False) and (Check[1].Checked = False) and (Check[2].Checked = False) and (Check[3].Checked = False) then Check[0].Checked:= True;
end;
procedure Check1(Sender: TObject);
begin
if Check[1].Checked then begin
Check[0].Checked:= False;
Check[2].Checked:= False;
Check[3].Checked:= False;
end;
if (Check[0].Checked = False) and (Check[1].Checked = False) and (Check[2].Checked = False) and (Check[3].Checked = False) then Check[1].Checked := True;
end;
procedure Check2(Sender: TObject);
begin
if Check[2].Checked then begin
Check[0].Checked:= False;
Check[1].Checked:= False;
Check[3].Checked:= False;
end;
if (Check[0].Checked = False) and (Check[1].Checked = False) and (Check[2].Checked = False) and (Check[3].Checked = False) then Check[2].Checked:= True;
end;
procedure Check3(Sender: TObject);
begin
if Check[3].Checked then begin
Check[0].Checked:= False;
Check[1].Checked:= False;
Check[2].Checked:= False;
end;
if (Check[0].Checked = False) and (Check[1].Checked = False) and (Check[2].Checked = False) and (Check[3].Checked = False) then Check[3].Checked:= True;
end;
procedure InitializeWizard();
begin
Check[0]:= TCheckBox.Create(WizardForm);
with Check[0] do begin
Parent:= WizardForm.SelectTasksPage;
Checked:= True;
Left:=ScaleX(4);
Top:= ScaleY(90);
Width:=ScaleX(280);
OnClick:= @Check0;
// Будет Win_7.txt
Caption:= ' Стандартные иконки в стиле Win 7';
end;
Check[1]:= TCheckBox.Create(WizardForm);
with Check[1] do begin
Parent:= WizardForm.SelectTasksPage;
Left:=ScaleX(4);
Top:= ScaleY(115);
Width:=ScaleX(280);
OnClick:= @Check1;
// Будет Win_10.txt
Caption:= ' Стандартные иконки в стиле Win 10';
end;
Check[2]:= TCheckBox.Create(WizardForm);
with Check[2] do begin
Parent:= WizardForm.SelectTasksPage;
Left:=ScaleX(4);
Top:= ScaleY(140);
Width:=ScaleX(350);
OnClick:= @Check2;
// Будет Win_10_2.txt
Caption:= ' Станадартные иконки в стиле Win 7 + Win 10';
end;
Check[3]:= TCheckBox.Create(WizardForm);
with Check[3] do begin
Parent:= WizardForm.SelectTasksPage;
Left:=ScaleX(4);
Top:= ScaleY(165);
Width:=ScaleX(280);
OnClick:= @Check3;
// Будет Dop_Win_7.txt
Caption:= ' Дополнительные иконки в стиле Win 7';
end;
end;
чекбоксы прикрутить нельзя к самостоятельно созданной странице, только к стандартным? |
|
Последний раз редактировалось Chudmin, 21-11-2018 в 11:15. Отправлено: 11:06, 21-11-2018 | #154 |
|
Ветеран Сообщения: 863
|
Профиль | Отправить PM | Цитировать |
|
------- Последний раз редактировалось Dodakaedr, 21-11-2018 в 16:27. Отправлено: 15:13, 21-11-2018 | #155 |
|
Пользователь Сообщения: 98
|
Профиль | Отправить PM | Цитировать Цитата Dodakaedr:
|
|
|
Отправлено: 20:57, 21-11-2018 | #156 |
|
Новый участник Сообщения: 1
|
Профиль | Отправить PM | Цитировать Дорогие форумчане, интересует следующий вопрос.
Возможно ли как-нибудь уловить ошибки которые возникают при установке программы? Например: если ставить с пацарапанного или грязного диска получим ошибку "The Source file is corrupted", которая успешно отобразится на экране. Мне же нужно название этой ошибки отправить на сервер (Или возможно есть другой способ). У кого какие мысли возникают? |
|
Отправлено: 11:38, 22-11-2018 | #157 |
|
Пользователь Сообщения: 98
|
Профиль | Отправить PM | Цитировать Здравствуйте всем! Подскажите пожалуйста, функция UpdateReadyMemo действует только для стандартных страниц, или можно включать сюда и созданные пользователем тоже.
|
|
Отправлено: 12:33, 22-11-2018 | #158 |
|
Alien Сообщения: 4262
|
Профиль | Отправить PM | Цитировать Цитата RbwKz:
/LOG Указывает инсталлятору создать log-файл в папке TEMP для подробного отчета о действиях и событиях при установке, обработке записей секции [Run], предпринятых в ходе установки. Применяется при отслеживании ошибок. Например, если вы подозреваете, что файл не был заменен, хотя должен был, log-файл сообщит, что файл был действительно пропущен и почему это произошло. Log-файлу присваивается уникальное имя на базе текущей даты. (Существующие файлы не перезаписываются и не дополняются.) Информация, содержащаяся в log-файле, техническая и поэтому не может быть понята пользователем. Формат файла может измениться без уведомления. /LOG="filename" Параметр похож на /LOG, но в отличие от него позволяет указать фиксированный путь/имя файла для log-файла. Если файл с указанным именем уже существует, он будет заменен. Если файл не может быть создан, установка прервется и выдаст сообщение об ошибке. |
|
|
Отправлено: 17:10, 22-11-2018 | #159 |
|
Новый участник Сообщения: 11
|
Профиль | Отправить PM | Цитировать I want create custom setup with inno setup like this:
https://drive.google.com/open?id=1L2...MJ7viq2KvhR6sA Please help for iss code! |
|
Отправлено: 11:30, 02-12-2018 | #160 |
|
|
Участник сейчас на форуме |
|
Участник вне форума |
![]() |
Автор темы |
![]() |
Сообщение прикреплено |
| |||||
| Название темы | Автор | Информация о форуме | Ответов | Последнее сообщение | |
| Скрипты Inno Setup. Помощь и советы [часть 7] | El Sanchez | Автоматическая установка приложений | 2499 | 02-02-2015 08:59 | |
| Скрипты Inno Setup. Помощь и советы [часть 6] | El Sanchez | Автоматическая установка приложений | 2494 | 10-03-2014 11:51 | |
| Скрипты Inno Setup. Помощь и советы [часть 5] | El Sanchez | Автоматическая установка приложений | 1999 | 28-03-2013 19:09 | |
| Скрипты Inno Setup. Помощь и советы [часть 4] | El Sanchez | Автоматическая установка приложений | 2099 | 22-05-2012 23:16 | |
| Скрипты Inno Setup. Помощь и советы [часть 3] | Serega | Автоматическая установка приложений | 3755 | 26-10-2011 17:58 | |
|