Имя пользователя:
Пароль:  
Помощь | Регистрация | Забыли пароль?  | Правила  

Компьютерный форум OSzone.net » Автоматическая установка Windows » Автоматическая установка приложений » Скрипты Inno Setup. Помощь и советы [часть 4]

Закрытая тема
Настройки темы
Скрипты Inno Setup. Помощь и советы [часть 4]

Аватара для El Sanchez

Ветеран


Contributor


Сообщения: 1271
Благодарности: 1029


Конфигурация

Профиль | Отправить PM | Цитировать


Изменения
Автор: Vadikan
Дата: 22-05-2012
Описание: Закрыто
Внимание! Данная тема предназначена только для обсуждения написания скриптов !
Остальные вопросы, а также последние версии компилятора в теме
Inno Setup. Прочие вопросы.


Показать/скрыть: Справка, руководство, примеры:
Показать/скрыть: Ссылки на примеры скриптов:
Показать/скрыть: Дополнительные программы для Inno Setup:
  • ISTool - неплохой редактор скриптов Inno Setup.
    Последняя версия: 5.3.0.1 [29.09.2009] - Скачать | зеркало;

  • Inno Script Generator - генератор скриптов Inno Setup. Обладает некоторыми полезными функциями, которых нет ни у самого Inno Setup, ни у ISTool.
    Последняя версия: 1.0.3.1 [23.03.2008] - Скачать | зеркало на русифицированную программу;
    Примечание: Родной сайт www.hisoft2000.de более недоступен, поэтому здесь расположены сторонние ссылки.

  • Inno Setup Form Designer - редактор страниц Inno Setup, можно создавать свои страницы.
    Последняя версия: 2.0.8 [12.11.2006] - Скачать;
    Примечание: Родной сайт http://isfd.kaju74.de/index.php?isfd более недоступен, поэтому здесь расположены сторонние ссылки.

  • Inno Setup GameScript Generator - программа генерирует скрипты для Inno Setup . С помощью GameScript Generator и Inno Setup вы сможете быстро создать простенький инсталляционный пакет для любой игры. В инсталлятор можно встроить музыку, слайдшоу и фоновый рисунок. Для специалистов созданный скрипт, возможно, будет неплохой заготовкой для дальнейшей модернизации;

  • ISSkin - Программа для создания и добавления в инсталлятор скинов. Инструкция.
    Последняя версия: 3.0.0.0 [19.01.2010] - Скачать;

  • ISSJoiner - Программа для объединения нескольких скриптов InnoSetup в один.
    Последняя версия: 3.0 [23.07.2009]

  • Converter - Программа конвертирует reg-файлы в формат *.iss (формат скриптов Inno Setup).
    Последняя версия: 0.1.4 [13.03.2010] - Скачать;


Предыдущие ветки обсуждения по ссылкам ниже и в прикреплённых архивах:
Inno Setup [все вопросы] часть 1
Inno Setup [все вопросы] часть 2
Скрипты Inno Setup. Помощь и советы [часть 3]


Продолжение обсуждения
Скрипты Inno Setup. Помощь и советы [часть 5]

Отправлено: 18:01, 29-08-2011

 

Аватара для XXXler

Ветеран


Сообщения: 1073
Благодарности: 194

Профиль | Отправить PM | Цитировать


Цитата TROY Diamond:
Мне нужно, чтобы сообщения, написанные в секции Code, были на разных языках... Как написать там несколько вариантов? И, чтобы один из них сам выбирался в зависимости от языка системы и т.п? »
я дал вам пример:

Код: Выделить весь код
MsgBox(CustomMessage ('MsgBoxText'), mbInformation, MB_OK); // только текст
MsgBox(ExpandConstant ('{cm:MsgBoxText}'), mbInformation, MB_OK); // текст с возможностью форматирования, вложения и т.п.
в зависимости от выбранного при установке языка MsgBoxText будет принимать нужное значение из секции CustomMessages:
Код: Выделить весь код
en.MsgBoxText=It's alive!
ru.MsgBoxText=Таки работает!!!
Это сообщение посчитали полезным следующие участники:

Отправлено: 16:59, 08-01-2012 | #581



Для отключения данного рекламного блока вам необходимо зарегистрироваться или войти с учетной записью социальной сети.

Если же вы забыли свой пароль на форуме, то воспользуйтесь данной ссылкой для восстановления пароля.


Пользователь


Сообщения: 148
Благодарности: 49

Профиль | Отправить PM | Цитировать


Почему на MainForm не срабатывает botva2.dll?

Отправлено: 19:39, 08-01-2012 | #582


Пользователь


Сообщения: 55
Благодарности: 0

Профиль | Отправить PM | Цитировать


Здравствуйте, подскажите пожалуйста:

Делаю лого с помощью этого скрипта:
читать дальше »

[Setup]
AppName=Test
AppVerName=Test
DefaultDirName={pf}\Test
OutputDir=userdocs:Test.

[Files]
Source: logo.png; DestDir: {tmp}; Flags: dontcopy nocompression

[code]
var
LogoImage:TBitmapImage;
LogoPanel: TPanel;
LogoLabel: TLabel;

procedure InitializeWizard();
/////////////////
begin
LogoPanel := TPanel.Create(WizardForm);
with LogoPanel do
begin
Parent := WizardForm;
Left := ScaleX(8);
Top := ScaleY(327);
Width := ScaleX(120);
Height := ScaleY(28);
BevelOuter := bvNone;
end;

LogoImage := TBitmapImage.Create(WizardForm);
with LogoImage do
begin
Parent := LogoPanel;
Left := ScaleX(0);
Top := ScaleY(0);
AutoSize:=true;
ReplaceColor:=clFuchsia;
ReplaceWithColor:=clBtnFace;
ExtractTemporaryFile('logo.png');
Bitmap.LoadFromFile(ExpandConstant('{tmp}\logo.png'));
end;

end;


Я хочу чтобы оно исчезало к примеру после прохода экрана приветствия, чтоб глаза не мозолить. Это возможно? И главное как?

Отправлено: 15:03, 09-01-2012 | #583


Пользователь


Сообщения: 91
Благодарности: 7

Профиль | Сайт | Отправить PM | Цитировать


Цитата XXXler:
я дал вам пример:
А как сюда добавить?

Код: Выделить весь код
function InitializeSetup(): Boolean;
var
  ResultCode: Integer;
  ResultStr:string;
begin
Result:=True;
begin
  If RegQueryStringValue(HKLM, 'SOFTWARE\Microsoft\Windows\CurrentVersion\Uninstall\{7216871F-869E-437C-B9BF-2A13F2DCE63F}_is1', 'UninstallString', ResultStr)
then
 begin
  If ResultStr<>''
then
 begin
  ResultStr:=RemoveQuotes(ResultStr);
  if MsgBox('Эта программа или другая её версия уже была ранее установлена.' #13#13 'Вы хотите предварительно удалить её?', mbInformation, MB_YESNO) = idYes
then
  if not Exec(ResultStr, '', '', SW_SHOWNORMAL, ewWaitUntilTerminated, ResultCode)
then
  MsgBox('Ошибка удаления. ' #13#13 '' + SysErrorMessage(ResultCode) + '.' #13#13 'Вероятно, деинсталлятор был перемещён, удалён или переименован.', mbError, MB_OK);
end;
end;
end;
end;
Как в этом коде сделать:

Код: Выделить весь код
procedure RD(Dir:string);
var 
res : integer;
begin
  Exec('cmd.exe', ' /c rd /S /Q  ' + AddQuotes(Dir),ExpandConstant('{sys}'), SW_Hide,ewWaitUntilTerminated,res);
  Exec('cmd.exe', ' /c rd /S /Q  ' + '"'+Dir+'"',ExpandConstant('{sys}'), SW_Hide,ewWaitUntilTerminated,res);
end;

procedure CurUninstallStepChanged(CurUninstallStep: TUninstallStep);
begin
if CurUninstallStep=usDone then begin
  if DirExists(ExpandConstant('{userdocs}\My Company\My Game')) then begin
    if MsgBox('Вы хотите удалить сохранения и настройки игры?',mbconfirmation, mb_yesno) = IDYES then RD(ExpandConstant('{userdocs}\My Company\My Game'))
  end;
end;
end;
1.Нужно, чтобы сообщение с предложением удалить сохранения появлялось ДО УДАЛЕНИЯ ИГРЫ. А сейчас сначала удаляется игра, пояляется сообщение о том, что игра полностью удалена и только потом предлагается удалить сохранения...

2. Как организовать проверку "основной" папки и удалить её если она пустая?
Например, сохранения лежат в "Мои документы" -> EA Games. Если, кроме сохранений этой игры в "EA Games", больше ничего нет, то её нужно удалить.
Зачем она пустая будет висеть на винте?!


Поясгите про параметр "AppMutex", как его применять? Как раз нужна проверка на наличие уже установленного, а тем более запущенного приложения. С возможностью его закрыть БЕЗ ЗАПРОСА и предложением удалить!

Как добавить задачу в "Назначенные задания" - файл *.job в WINDOWS\Tasks? Как его "создать" в Inno?

Нужно, чтобы приложение запускалось с Windows и/или в опредёленное время.

Ярлык приложения в "Автозагрузка" и/или в реестре НЕ подходит!!! Нужно, чтобы было "задание", т.к. оно связано с настройками программы. И чтобы оно устанавливалось ТОЛЬКО если пользователь его выберет при установке.

Отправлено: 15:59, 09-01-2012 | #584


Аватара для No4noylis

Пользователь


Сообщения: 94
Благодарности: 38

Профиль | Отправить PM | Цитировать


leshcat, добавь это вконце:
Код: Выделить весь код
procedure CurPageChanged(CurPageID: Integer);
begin
LogoPanel.Hide;
 case CurPageID of
    wpWelcome:
    begin
    LogoPanel.Show;
    end;
 end;
end;
TROY Diamond, ты сильно много пишешь, аж читать лень

-------
Нет ничего невозможного...

Это сообщение посчитали полезным следующие участники:

Отправлено: 16:05, 09-01-2012 | #585


Аватара для nik1967

Старожил


Сообщения: 440
Благодарности: 251

Профиль | Сайт | Отправить PM | Цитировать


Цитата TROY Diamond:
Как в этом коде сделать: »
Как то так
Код: Выделить весь код
[Languages]
Name: rus; MessagesFile: compiler:Languages\Russian.isl
Name: eng; MessagesFile: compiler:Default.isl

[CustomMessages]
rus.DelSave=Удалить сохраненные игры и профили?
eng.DelSave=Delete save games and profiles?

[_Code]
procedure CurUninstallStepChanged(CurUninstallStep: TUninstallStep); // удаление сейвов
begin
  if (CurUninstallStep=usUninstall) then begin
    if DirExists(ExpandConstant('{userdocs}' + '\My Company\My Game')) then
      if MsgBox (ExpandConstant('{cm:DelSave}'),mbconfirmation, mb_yesno) = IDYES then
    DelTree(ExpandConstant('{userdocs}' + '\My Company\My Game'), True, True, True);
  end;
end;

На счёт "ДО УДАЛЕНИЯ ИГРЫ" советую посмотреть справку по поводу
Код: Выделить весь код
TUninstallStep values
usAppMutexCheck, usUninstall, usPostUninstall, usDone
Цитата TROY Diamond:
А как сюда добавить? »
Выше пример, ну куда уж более понятнее то?
Не проверял, но как то так
Код: Выделить весь код
[Languages]
Name: rus; MessagesFile: compiler:Languages\Russian.isl
Name: eng; MessagesFile: compiler:Default.isl

[CustomMessages]
rus.DelMsg=Эта программа или другая её версия уже была ранее установлена.%nВы хотите предварительно удалить её?
rus.ErrorRem=Ошибка удаления.
rus.ErrorRem2=Вероятно, деинсталлятор был перемещён, удалён или переименован.
eng.DelMsg=This program or its other version has already been previously installed.%nDo you want to remove it first?
eng.ErrorRem=Failure to remove.
eng.ErrorRem2=Probably the uninstaller has been moved, deleted or renamed.

[_Code]
function InitializeSetup(): Boolean;
var
  ResultCode: Integer;
  ResultStr:string;
begin
Result:=True;
begin
  If RegQueryStringValue(HKLM, 'SOFTWARE\Microsoft\Windows\CurrentVersion\Uninstall\{7216871F-869E-437C-B9BF-2A13F2DCE63F}_is1', 'UninstallString', ResultStr)
then
 begin
  If ResultStr<>''
then
 begin
  ResultStr:=RemoveQuotes(ResultStr);
  if MsgBox(ExpandConstant('{cm:DelMsg}'), mbInformation, MB_YESNO) = idYes
then
  if not Exec(ResultStr, '', '', SW_SHOWNORMAL, ewWaitUntilTerminated, ResultCode)
then
  MsgBox(ExpandConstant('{cm:ErrorRem} ') #13#13 '' + SysErrorMessage(ResultCode) + '.' #13#13 ExpandConstant('{cm:ErrorRem2}'), mbError, MB_OK);
end;
end;
end;
end;

-------
Если сообщение оказалось полезным для Вас, то помимо спасибо, можно нажать на "Полезное сообщение".


Последний раз редактировалось nik1967, 09-01-2012 в 17:24.

Это сообщение посчитали полезным следующие участники:

Отправлено: 16:28, 09-01-2012 | #586


Пользователь


Сообщения: 55
Благодарности: 0

Профиль | Отправить PM | Цитировать


No4noylis or All

Спасибо, работает!

Еще два вопроса:

1.А как на кастом пейджах сделать, чтоб оно появлялось?

Ввод кастом пейджа делался так:
читать дальше »

procedure CreateTheWizardPages;
var
Page1: TWizardPage;
Button_Install : TButton;

begin
{ TButton and others }

Page1 := CreateCustomPage(wpWelcome, 'Main Menu', 'Please choose desired action: ');

Button_Install := TButton.Create(Page1);
Button_Install.Top := Button_Install.Top + Button_Install.Height - ScaleY(20);
Button_Install.Left:= Button_Install.Left + (Button_Install.Width)*2 - ScaleY(20);
Button_Install.Width := ScaleX(150);
Button_Install.Height := ScaleY(50);
Button_Install.Caption := 'Go to Directory Page';
// Button_Install.OnClick := @ButtonOnClick;
Button_Install.Parent := Page1.Surface;

end;


2. Как сделать переход на страницу Выбора Директории по клику кнопки? А если такая же кастом страница?

Последний раз редактировалось leshcat, 10-01-2012 в 20:33.


Отправлено: 00:26, 10-01-2012 | #587


Новый участник


Сообщения: 13
Благодарности: 2

Профиль | Отправить PM | Цитировать


Цитата El Sanchez:
Использовать ISSkin.dll и свой скин. »
ISSkin не отрисовывает чекбоксы и радиокнопки, об этом писали даже разработчику. Пишет что решают.

Отправлено: 12:35, 10-01-2012 | #588


Аватара для R.i.m.s.k.y.

Ветеран


Сообщения: 1640
Благодарности: 536

Профиль | Отправить PM | Цитировать


Извините за тюпые вопросы.
Какими командами можно:
а) прервать итеракцию цикла и перейти в следующую итеракцию?
б) прервать цикл полностью и продолжить дальше по телу функции?
в) прервать выполнение функции в заданном месте?

-------
Хороший установщик тот, которого не замечаешь
Оформление в инно пустая трата времени: толку мало, головняка много, а ошибок истчо больше!

Это сообщение посчитали полезным следующие участники:

Отправлено: 12:41, 10-01-2012 | #589


Аватара для XXXler

Ветеран


Сообщения: 1073
Благодарности: 194

Профиль | Отправить PM | Цитировать


Цитата R.i.m.s.k.y.:
прервать итеракцию цикла и перейти в следующую итеракцию? »
Continue;

Цитата R.i.m.s.k.y.:
б) прервать цикл полностью и продолжить дальше по телу функции? »
Break;

Цитата R.i.m.s.k.y.:
прервать выполнение функции в заданном месте? »
Exit;

-------
Исходные коды проектов

Это сообщение посчитали полезным следующие участники:

Отправлено: 12:54, 10-01-2012 | #590



Компьютерный форум OSzone.net » Автоматическая установка Windows » Автоматическая установка приложений » Скрипты Inno Setup. Помощь и советы [часть 4]

Участник сейчас на форуме Участник сейчас на форуме Участник вне форума Участник вне форума Автор темы Автор темы Шапка темы Сообщение прикреплено

Похожие темы
Название темы Автор Информация о форуме Ответов Последнее сообщение
Test ferget Тест-форум 0 24-08-2011 01:25
test ! ! Aaa ! ! Тест-форум 0 23-04-2011 11:29
test Santa aka Snt Тест-форум 0 16-04-2011 22:35
test xolod. Программное обеспечение Linux и FreeBSD 0 19-04-2009 21:03
Test memory KEugeNik Хочу все знать 11 23-11-2003 23:11




 
Переход