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

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

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

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

Ветеран


Contributor


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


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

Профиль | Отправить 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

 

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


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

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


доброе время суток.
хотелось бы спросить у вас совета как сделать правильней. у меня есть отдельный файл установки и отдельно обновление.
я хочу их объединить. при запуске система должна считать в реестре запись(причем две записи, так как предыдущей версий была другой путь записи в реестре) и когда система обнаружить хоть одну из этих записей то предложить запустятся обновления. а если записи нет, то будет запустится установка.
вот как бы сделать это так чтоб не сильно много пришлось переделывать уже в готовом установке и обновлении.

p.s. и еще не сильно сложно как производить поиск записи в реестре?

Отправлено: 11:07, 19-04-2012 | #1571



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

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


Аватара для Johny777

Ветеран


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

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


Цитата Temyraz@fb:
при запуске система должна считать в реестре запись »
пример поиска записи (и файлов) для 32 и 64 битной системы на этапе инициализации (InitializeSetup).
читать дальше »
Код: Выделить весь код
[Setup]
AppName=MyProg
AppVerName=MyProg
DefaultDirName={pf}\MyProg

[Languages]
Name: russian; MessagesFile: compiler:Languages\Russian.isl

[_Code]
function InitializeSetup: Boolean;
begin
     Result:=true; 
if not iswin64 the begin
 if not ((RegKeyExists(HKLM, 'SOFTWARE\MyProg')) 
    and (FileExists('C:\Program Files\MyProg\1.exe')) 
    and (FileExists('C:\Program Files\MyProg\2.dll')) 
    and (FileExists('C:\Program Files\MyProg\3.ocx'))) 
then 
begin
    MsgBox('Не найдены необходимые компоненты.', mbInformation, MB_OK);
    Result:=false;  
  end;
end; //not iswin64
if iswin64 the begin
  if not ((RegKeyExists(HKLM64, 'SOFTWARE\SYSWOW64\MyProg')) 
    and (FileExists('C:\Program Files\MyProg\1.exe')) 
    and (FileExists('C:\Program Files\MyProg\2.dll')) 
    and (FileExists('C:\Program Files\MyProg\3.ocx'))) 
then 
begin
    MsgBox('Не найдены необходимые компоненты.', mbInformation, MB_OK);
    Result:=false; 
  end;
end; //iswin64
end;

Цитата Temyraz@fb:
я хочу их объединить »
как?
авторан?
Это сообщение посчитали полезным следующие участники:

Отправлено: 12:43, 19-04-2012 | #1572


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


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

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


у меня есть два интерполятора(в .iss) только один выполняет установку с нуля, а второй обновляет. я хочу чтоб при наличии в реестре записи установка шла по шагам обновления, а если нет то по шагам установки.
поиск в реестре сделал такой:
Код: Выделить весь код
[_Code]
function InitializeSetup(): Boolean;
var errCode, n: Integer; RegExe, isKey: String; Keys: TArrayOfString;
begin
RegExe:= AddBackslash(GetSystemDir) + 'reg.exe'
  if FileExists(RegExe) then begin MsgBox('SC' #13#10 'sc не установлено?', mbConfirmation, MB_YESNO); Exit end;
	isKey:= 'HKLM\Software\IVT\SC\{#MyAppVer}.{#MyAppPatch}'
  if Result = False then
    MsgBox('InitializeSetup:' #13#13 'Ok, bye bye.', mbInformation, MB_OK);
end;

Отправлено: 13:01, 19-04-2012 | #1573


Аватара для Johny777

Ветеран


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

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


Temyraz@fb,
так попробуй (собрал из примеров)
Код: Выделить весь код
[Setup]
AppName=MyProg
AppVerName=MyProg
DefaultDirName={pf}\MyProg

[Languages]
Name: russian; MessagesFile: compiler:Languages\Russian.isl

[  Code]
function InitializeSetup: Boolean;
begin
  if RegKeyExists(HKEY_CURRENT_USER, 'Software\Jordan Russell\Inno Setup') or    /// ключ 1 или ключ 2 есть, то
     RegKeyExists(HKEY_CURRENT_USER, 'Software\Jordan Russell\Inno Setup 2')
  then
    begin
      if MsgBox('Болт в процессе отпиливания !' + #10#13 +
                'Хочешь попытаться навинтить?', mbError, MB_YESNO) = idYes
        then 
        /// Ответ "Да". Устанавливаем обновление. Здесь действие
      else 
    end
    else
    begin
      if MsgBox('Ты действительно хочешь навинтить?', mbError, MB_YESNO) = idYes
        then 
        /// устанавливаем всё целиком
      else 
    end;
end;
я не совсем догоняю кто должен решать какой из установщиков запустить
Это сообщение посчитали полезным следующие участники:

Отправлено: 13:52, 19-04-2012 | #1574


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


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

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


вот смотри:
Код: Выделить весь код
[  Code]
function InitializeSetup: Boolean;
begin
  if RegKeyExists(HKEY_CURRENT_USER, 'Software\Jordan Russell\Inno Setup') or    /// ключ 1 или ключ 2 есть, то
     RegKeyExists(HKEY_CURRENT_USER, 'Software\Jordan Russell\Inno Setup 2')
  then
    begin
      if MsgBox('Болт в процессе отпиливания !' + #10#13 +
                'Хочешь попытаться навинтить?', mbError, MB_YESNO) = idYes
        then 
        ///запускается обновление(процесс обновления содержит свой набор [Files] [Run] [Components] и свою последовательность [_Code] )
      else 
    end
    else
    begin
      if MsgBox('Ты действительно хочешь навинтить?', mbError, MB_YESNO) = idYes
        then 
        //////запускается установки(процесс установки содержит свой набор [Files] [Run] [Components] и свою последовательность [_Code] )
      else 
    end;
end;
страницы install очень различаются между собой. поэтому в этом и проблема у меня

извините если скажу сейчас полный бред.
а можно ли так сделать: написать отдельный iss в котором будет установка по одному типу, а в другом его вызвать?
т.е. сделать условия, если выполняется такое условие то запустить по 1.iss а если нет то по 2.iss

Отправлено: 14:34, 19-04-2012 | #1575


Забанен


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

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


Имеется в скрипте вот что:
читать дальше »
Код: Выделить весь код
[Components]
Name: A; Description: Program; Types: full; Flags: exclusive
Name: A/A; Description: Program a; Types: custom
Name: A/B; Description: Program b; Types: custom

[Files]
Source:Program_a\*; DestDir: {app}\Program_a\; Flags: recursesubdirs createallsubdirs; Components: A/A
Source:Program_b\*; DestDir: {app}\Program_b\; Flags: recursesubdirs createallsubdirs; Components: A/B

[Registry]
Root: HKLM; SubKey: SOFTWARE\Program_a; ValueType: dword; Components: A/A
Root: HKLM; SubKey: SOFTWARE\Program_b; ValueType: dword; Components: A/B

Как сделать так чтобы инсталлятор при определении ключа HKEY_LOCAL_MACHINE\SOFTWARE\Program_X одного из компонентов не устанавливал компонент, т.е если в реестре присутствует например HKEY_LOCAL_MACHINE\SOFTWARE\Program_а, то собственно и компонент Program a не устанавливался?

Отправлено: 14:49, 19-04-2012 | #1576


Аватара для Johny777

Ветеран


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

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


Цитата Temyraz@fb:
если выполняется такое условие то запустить по 1.iss а если нет то по 2.iss »
1. сделать авторан который в зависимости от ключа реестра запускает один из инсталлов
этот же код выше может играть такую роль. Даже страницы не нужны
2. показывать определённые настройки в зависимости от... (пример ниже) кнопок
читать дальше »

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

[Languages]
Name: russian; MessagesFile: compiler:Languages\Russian.isl

[Icons]
Name: {group}\{cm:UninstallProgram,My Program}; Filename: {uninstallexe}

[CustomMessages]
HeaderLabelPage=Выберите тип установки
MyRadioCaption_1=Обычная установка
MyRadioCaption_2=Портативная установка

[  code]
var
  MyNewPage: TWizardPage;
  MyRadioBtn_1, MyRadioBtn_2: TRadioButton;

procedure GetMyNewPage();
begin
  MyNewPage := CreateCustomPage(wpWelcome,
    ExpandConstant('{cm:HeaderLabelPage}'), '');

  MyRadioBtn_1 := TRadioButton.Create(WizardForm);
  with MyRadioBtn_1 do
  begin
    Top := ScaleY(50);
    Width := ScaleX(150);
    Height := ScaleY(13);
    Caption := ExpandConstant('{cm:MyRadioCaption_1}');
    Checked := True;
    Parent := MyNewPage.Surface;
  end;

  MyRadioBtn_2 := TRadioButton.Create(WizardForm);
  with MyRadioBtn_2 do
  begin
    Top := ScaleY(120);
    Width := ScaleX(150);
    Height := ScaleY(13);
    Caption := ExpandConstant('{cm:MyRadioCaption_2}');
    Parent := MyNewPage.Surface;
  end;
end;

procedure InitializeWizard();
begin
  GetMyNewPage();
end;

3. есть пример запуска инсталла с параметрами командной строки
например для компонетов
setup.exe/COMPONENTS="help,plugins" , где help,plugins это компоненты, но минус в том, что пользователь потом может изменить выбор

,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,, ,,,,,,,,,,,,,,,,,,,,,,,,,

Devils Night,
вот пример для одного компонента; Check: Skip
читать дальше »
Код: Выделить весь код
; -- Components.iss --
; Demonstrates a components-based installation.

; SEE THE DOCUMENTATION FOR DETAILS ON CREATING .ISS SCRIPT FILES!

[Setup]
AppName=My Program
AppVersion=1.5
DefaultDirName={pf}\My Program
DefaultGroupName=My Program
UninstallDisplayIcon={app}\MyProg.exe
OutputDir=userdocs:Inno Setup Examples Output

[Types]
Name: "full"; Description: "Full installation"
Name: "compact"; Description: "Compact installation"
Name: "custom"; Description: "Custom installation"; Flags: iscustom

[Components]
Name: "program"; Description: "Program Files"; Check: Skip
Name: "help"; Description: "Help File"

[ Code]
function Skip:boolean;
var
  sz:Integer;
  s:string;
begin
  Result:=True;
begin
 If RegKeyExists(HKEY_CURRENT_USER, 'Software\Jordan Russell\Inno Setup') then
  Result:=False
end;
end;

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

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

Отправлено: 15:03, 19-04-2012 | #1577


Забанен


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

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


Цитата Johny777:
вот пример для одного компонента; Check: Skip »

А если два компонента, то нужно так сделать?:
читать дальше »
Код: Выделить весь код
[ Code]
function Skip:boolean;
var
  sz:Integer;
  s:string;
begin
  Result:=True;
begin
 If RegKeyExists(HKEY_LOCAL_MACHINE, 'Software\Programs') then
  Result:=False
end;
end;


function Skip2:boolean;
var
  sz:Integer;
  s:string;
begin
  Result:=True;
begin
 If RegKeyExists(HKEY_LOCAL_MACHINE, 'Software\Programs2') then
  Result:=False
end;
end;

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

Отправлено: 15:52, 19-04-2012 | #1578


Аватара для Johny777

Ветеран


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

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


Devils Night,
всё правильно

[Components]
Name: "program"; Description: "Program Files"; Check: Skip
Name: "help"; Description: "Help File"; Check: Skip2
Это сообщение посчитали полезным следующие участники:

Отправлено: 15:59, 19-04-2012 | #1579


Аватара для Ivan_009

Ветеран


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

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


Как перенести эту кнопку в это место и скрыть ее на первой и последней странице зараннее благодарю за помощь...

Последний раз редактировалось Ivan_009, 28-04-2012 в 09:06.


Отправлено: 22:30, 19-04-2012 | #1580



Компьютерный форум 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




 
Переход