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

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

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

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

Ветеран


Contributor


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


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

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


Изменения
Автор: El Sanchez
Дата: 16-02-2015
Внимание! Данная тема предназначена только для обсуждения написания скриптов !
Остальные вопросы, а также последние версии компилятора в теме
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. Помощь и советы [часть 4]

Отправлено: 03:49, 21-05-2012

 

Аватара для nik1967

Старожил


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

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


Yury_Prizrak, никогда не работал с xml документами, может стоит посмотреть

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


Отправлено: 12:58, 15-08-2012 | #621



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

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


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

Ветеран


Contributor


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

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


Цитата Yury_Prizrak:
Как сначала проверить наличие атрибута 'bbb' »
Yury_Prizrak,
Код: Выделить весь код
//способ №1
XMLAttributes := XMLNode.attributes;
XMLAttrib := XMLAttributes.getNamedItem('bbb');
if not VarIsEmpty(XMLAttrib) then MsgBox(XMLAttrib.value, mbInformation, MB_OK);

//способ №2
XMLAttrib := XMLNode.getAttribute('bbb');
if not VarIsNull(XMLAttrib) then MsgBox(XMLAttrib, mbInformation, MB_OK);
Это сообщение посчитали полезным следующие участники:

Отправлено: 15:47, 15-08-2012 | #622


Аватара для Ivan_009

Ветеран


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

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


Как передвинуть кнопку "завершить" где должна быть кнопка "отмена"

Последний раз редактировалось Ivan_009, 25-08-2012 в 14:17.


Отправлено: 16:41, 15-08-2012 | #623


Аватара для Johny777

Ветеран


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

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


Ivan_009,
кнопки "завершить" и "установить" нет!
это всё кнопка "далее" текст которой зависит от её, кнопки, расположения на той или иной странице

передвигать кнопки, если их расположение, на разных страницах разное нужно во встроенной процедуре переключения страниц
читать дальше »
Код: Выделить весь код
procedure CurPageChanged(CurPageID: Integer); 
begin
  case CurPageID of
    wpFinished:
    begin
       /// здесь пишешь координаты кнопки (если ширина и высотра не менялись, то только Top и Left)
    end;
  end;
end;

также запомни для повышении оптимизации, укорачивания кода и тем самым удалении ненужного кода:
если ты кнопку например на странице приветствия расположил слева снизу
и на следующей странице она там же, то при переходе на след. страницу остаются настройки с предыдущей, те не надо указывать те же координаты пока кнопка там же
пример:
читать дальше »
Код: Выделить весь код
procedure CurPageChanged(CurPageID: Integer); 
begin
  case CurPageID of
    wpWelcome:
    begin
       WizardForm.NextButton.SetBounds(ScaleX(543), ScaleY(556), ScaleX(87), ScaleY(27));
    end;
    
    wpSelectDir:
    begin
       WizardForm.NextButton.SetBounds(ScaleX(543), ScaleY(556), ScaleX(87), ScaleY(27));
    end;
  end;
end;


================================== Demo ===================================
настройки переключения как выше(для примера двигаем кнопку далее) :
читать дальше »
Код: Выделить весь код
[Setup]
AppName=My Program
AppVerName=My Program version 1.5
DefaultDirName={pf}\My Program
UninstallFilesDir={app}\uninstall


[code]
procedure CurPageChanged(CurPageID: Integer);
begin
  case CurPageID of
    wpWelcome: WizardForm.NextButton.Left := ScaleX(5);

    wpSelectDir: WizardForm.NextButton.Left := ScaleX(30);

    wpReady: WizardForm.NextButton.Left := ScaleX(70);
  end;
end;


те же настройки через таймер (не использовать такой метод без нужды)
под расширенную версию:
читать дальше »
Код: Выделить весь код
[Setup]
AppName=My Program
AppVerName=My Program version 1.5
DefaultDirName={pf}\My Program
UninstallFilesDir={app}\uninstall


[code]
var
  Page_Timer: Longword;

function SetTimer(hWnd, nIDEvent, uElapse, lpTimerFunc: LongWord): LongWord; external 'SetTimer@user32.dll stdcall';
function KillTimer(hWnd, nIDEvent: LongWord): LongWord; external 'KillTimer@user32.dll stdcall';

procedure Pages;
begin
  case WizardForm.CurPageID of
    wpWelcome: WizardForm.NextButton.Left := ScaleX(5);

    wpSelectDir: WizardForm.NextButton.Left := ScaleX(30);

    wpReady: WizardForm.NextButton.Left := ScaleX(70);
  end;
end;


procedure InitializeWizard;
begin
  Page_Timer := SetTimer(WizardForm.Handle, 3, 1, CallbackAddr('Pages')); /// где 3 уникальное число и в другом таймере должно быть другое, чтоб они не пересекались
end;

procedure DeinitializeSetup;
begin
  KillTimer(WizardForm.Handle, Page_Timer);
end;

Последний раз редактировалось Johny777, 15-08-2012 в 18:19.

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

Отправлено: 17:39, 15-08-2012 | #624


Аватара для Ivan_009

Ветеран


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

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


Johny777, у меня почемуто вышло так

Последний раз редактировалось Ivan_009, 25-08-2012 в 14:17.


Отправлено: 17:49, 15-08-2012 | #625


Аватара для Johny777

Ветеран


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

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


Ivan_009,
так сделай:
читать дальше »
Код: Выделить весь код
в процедуре обновления кнопок припиши строки
procedure UpdateButtons();
begin
...
  ButtonPanel[n].Left:= UsedButtons[n].Left;
  ButtonPanel[n].Top:= UsedButtons[n].Top;
...
end; 

if CurPageID = wpFinished then
begin
   ButtonPanel[1].Hide;
   WizardForm.NextButton.SetBounds(твои координаты);
   LoadButtonImage(WizardForm.NextButton, 2);
   UpdateButtons;
end;

дело в том что текстурирование не кнопок
а создание панелей поверх и на них картинок с 2-мя лейблами

Последний раз редактировалось Johny777, 15-08-2012 в 18:36.

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

Отправлено: 18:14, 15-08-2012 | #626


Аватара для Ivan_009

Ветеран


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

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


Возможно ли на эти кнопки наложить текстуру

Последний раз редактировалось Ivan_009, 25-08-2012 в 14:17.


Отправлено: 00:51, 16-08-2012 | #627


Аватара для Mafioza

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


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

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


как ассоциировать файлы *.apm с программой Autoplay menu builder ? заранее спасибо !!!!!

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


Аватара для Ivan_009

Ветеран


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

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


Mafioza, при установке программы автоматически ассоциируются

Последний раз редактировалось Ivan_009, 25-08-2012 в 14:17.


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


Забанен


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

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


Цитата Mafioza:
как ассоциировать файлы »
Смотри примеры в справке.
Делается примерно так
Ассоциация файлов

Пример 1
Код: Выделить весь код
[Registry]
Root: HKLM; Subkey: "Software\Classes\.w3m"; ValueType: string; ValueName: ""; ValueData: "WorldEdit.Scenario"; Flags: uninsdeletevalue
Root: HKLM; Subkey: "Software\Classes\WorldEdit.Scenario\DefaultIcon"; ValueType: string; ValueName: ""; ValueData: "{app}\WorldEdit.exe,2"; Flags: uninsdeletevalue
Root: HKLM; Subkey: "Software\Classes\WorldEdit.Scenario\shell\open\command"; ValueType: string; ValueName: ""; ValueData: "{app}\World Editor.exe ""%1"""; Flags: uninsdeletevalue
Пример 2
Код: Выделить весь код
[Setup]
AppName=My Program
AppVerName=My Program
DefaultDirName={pf}\My Program
DefaultGroupName=My Program

[Registry]
Root: HKLM; Subkey: SOFTWARE\Classes\.v64; Check: CheckOption(0)
Root: HKLM; Subkey: SOFTWARE\Classes\.z64; Check: CheckOption(1)
Root: HKLM; Subkey: SOFTWARE\Classes\MP64; ValueType: string; ValueData: My Program; Flags: uninsdeletekey
Root: HKLM; Subkey: SOFTWARE\Classes\MP64\DefaultIcon; ValueType: string; ValueData: {app}\MyProgram.exe,0
Root: HKLM; Subkey: SOFTWARE\Classes\MP64\shell\open\command; ValueType: string; ValueData: {app}\MyProgram.exe %1

[ Code]
var
  Page: TInputOptionWizardPage;

procedure InitializeWizard();
begin
  Page := CreateInputOptionPage(wpSelectTasks,
  'Select File Extension Association', 'Which the file extension you would like to associate?',
  'Select the file extension you would like to associate with My Program,'#13#10'then click Next.',
  False, False);

  {0} Page.Add('.v64');
  {1} Page.Add('.z64');

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

function CheckOption(OptionNum: integer): Boolean;
begin
  Result:= Page.Values[OptionNum];
end;

procedure CurPageChanged(CurPageID: Integer);
begin
  if CurPageID = wpReady then
    begin
    WizardForm.ReadyMemo.Lines.Add('');
      if Page.Values[1] or Page.Values[2] then
    WizardForm.ReadyMemo.Lines.Add('File extension association:');
      if Page.Values[1] then
    WizardForm.ReadyMemo.Lines.Add('      .v64');
      if Page.Values[2] then
    WizardForm.ReadyMemo.Lines.Add('      .z64');
  end;
end;


Пример 3

Код: Выделить весь код
[Setup]
AppName=My Program
AppVerName=My Program 1.5
DefaultDirName={pf}\My Program

[Types]
Name: full; Description: Полная установка
Name: cu stom_clean; Description: Пользовательская установка; Flags: iscustom

[Components]
Name: main; Description: Основные компоненты; Types: full custom_clean; Flags: checkablealone
Name: main\ass; Description: Установить ассоциации:; Types: full custom_clean; Flags: checkablealone
Name: main\ass\ani; Description: .ani; Types: full custom_clean

[Registry]
Root: HKCU; Subkey: Software\Microsoft\Windows\CurrentVersion\Explorer\FileExts\.ani; ValueType: string; ValueName: ; ValueData: ; Components: main\ass\ani
Root: HKCU; Subkey: Software\Microsoft\Windows\CurrentVersion\Explorer\FileExts\.ani; ValueType: string; ValueName: ProgID; ValueData: IrfanView.ani; Flags: uninsdeletevalue uninsdeletekeyifempty; Components: main\ass\ani

[ Code]
procedure CurStepChanged(CurStep: TSetupStep);
var
  String: String;
begin
if (CurStep = ssInstall) and (IsComponentSelected('main\ass\ani') = False) then
  if (ExpandConstant('{ reg:HKCU\Software\Microsoft\Windows\CurrentVersion\Explorer\FileExts\.ani,ProgID}') = 'IrfanView.ani') or
    (ExpandConstant('{reg:HKCU\Software\Microsoft\Windows\CurrentVersion\Explorer\FileExts\.ani,ProgID}') = 'IrfanView.ANI') then
    begin
    RegDeleteValue(HKEY_CURRENT_ USER, 'Software\Microsoft\Windows\CurrentVersion\Explorer\FileExts\.ani', 'ProgID')
    if (RegQueryStringValue(HKEY_CURRENT_ USER, 'Software\Microsoft\Windows\CurrentVersion\Explorer\FileExts\.ani', '', String)) and (String = '') then
        RegDeleteValue(HKEY_CURRENT_ USER, 'Software\Microsoft\Windows\CurrentVersion\Explorer\FileExts\.ani', '')
    RegDeleteKeyIfEmpty(HKEY_CURRENT_USER, 'Software\Microsoft\Windows\CurrentVersion\Explorer\FileExts\.ani')
    end
end;


Первый пример можно так же ассоциировать не только через HKLM но и HKCU. Это уж по личному усмотрению, кому как удобно.

Вкратце:
HKLM - идёт как общая расчитана на всех пользователей, т.е при таком условии даже новый созданный юзер на компе автоматически ассоциируется с программой.
HKCU - В основном расчитана на одного пользователя, т.е при каком пользователе программа ассоциировалась то на нём и останется, на других зверей не повлеяет.
Это сообщение посчитали полезным следующие участники:

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



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

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

Похожие темы
Название темы Автор Информация о форуме Ответов Последнее сообщение
Скрипты Inno Setup. Помощь и советы [часть 4] El Sanchez Автоматическая установка приложений 2099 22-05-2012 23:16
Скрипты Inno Setup. Помощь и советы [часть 3] Serega Автоматическая установка приложений 3755 26-10-2011 17:58
[архив] Скрипты Inno Setup. Помощь и советы [часть 2] Serega Автоматическая установка приложений 2651 08-11-2010 18:34
Скрипты Inno Setup Compiler QAZAK Автоматическая установка приложений 7 15-01-2007 17:59
Inno Setup tradeukraine Вебмастеру 3 13-06-2006 20:39




 
Переход