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

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

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

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

Ветеран


Contributor


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


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

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


Изменения
Автор: El Sanchez
Дата: 06-06-2020
Внимание! Данная тема предназначена только для обсуждения написания скриптов!
Остальные вопросы, а также последние версии компилятора в теме
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] - Скачать;

  • RegExporter - Бесплатная утилита для экспорта реестра и конвертации файлов *.reg и *.ini в инсталляционные скрипты Inno Setup и NSIS.
    Последняя версия: 1.3.0 [17.01.2015] - Скачать;



Предыдущие ветки обсуждения по ссылкам ниже и в прикреплённых архивах:

Скрипты 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

 

Аватара для habib2302

Ветеран


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

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


TheLeon, тут без понятия. если был бы полный скрипт со всеми необходимыми файлами для работы инсталлятора, то помог.

-------
Помог? От "Полезное сообщение" не откажусь!!!

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

Отправлено: 15:30, 11-05-2018 | #31



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

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


Аватара для TheLeon

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


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

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


habib2302. Ещё, если не трудно, посмотрите, почему не хочет устанавливать дополнения в program files и подобные директории.

Последний раз редактировалось TheLeon, 17-05-2018 в 09:29.


Отправлено: 15:47, 11-05-2018 | #32


Аватара для habib2302

Ветеран


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

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


TheLeon, поле тип установки и так находится на 0 отметке WizardForm.TypesCombo.Top := ScaleY(0).
Цитата TheLeon:
не хочет устанавливать дополнения в program files и подобные директории. »
в параметре DefaultDirName у вас указанно C:\Program Files (x86)\Spintires когда вместо C:\Program Files (x86) должна быть указана константа {pf} (подробнее читайте справку). Для наилучшего сжатия инсталлятора
замените
Compression=zip/9
InternalCompressLevel=ultra
CompressionThreads=2
SolidCompression=True

на
Compression=lzma2/Ultra64
SolidCompression=true
InternalCompressLevel=Ultra64
LZMADictionarySize=65536
LZMAMatchFinder=BT
LZMANumFastBytes=273
MergeDuplicateFiles=yes

-------
Помог? От "Полезное сообщение" не откажусь!!!

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

Отправлено: 16:50, 11-05-2018 | #33


Аватара для habib2302

Ветеран


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

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


TheLeon, если вам нужно, чтобы инсталлятор устанавливал допы в папку с игрой, то надо делать через реестр
DefaultDirName={reg:HKxx\SubkeyName,ValueName|Default}
для установки в program files добавьте в раздел setup
ArchitecturesInstallIn64BitMode=x64
ArchitecturesAllowed=x86 x64

-------
Помог? От "Полезное сообщение" не откажусь!!!

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

Отправлено: 21:03, 11-05-2018 | #34


Аватара для TheLeon

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


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

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


habib2302, нужна помощь, опять:
1. Как сделать так, чтобы после установки запускался bat файл(в зависимости оттого какой ты компонент выбрал), от имени администратора + скрытая установка(не высвечивалась командная строка)?
2. Как через bat открыть файл(.txt) и в конце дописать строчки(если они отсутствуют, если же нет, то ничего не делать):

Последний раз редактировалось TheLeon, 19-05-2018 в 13:27.


Отправлено: 19:21, 18-05-2018 | #35


Аватара для habib2302

Ветеран


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

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


Цитата TheLeon:
2. Как через bat открыть файл(.txt) и в конце дописать строчки(если они отсутствуют, если же нет, то ничего не делать): »
Цитата TheLeon:
от имени администратора »
вам сюда
Цитата TheLeon:
1. Как сделать так, чтобы после установки запускался bat файл(в зависимости оттого какой ты компонент выбрал), скрытая установка(не высвечивалась командная строка)? »
Если у вас не запускается батник добавьте
Flags: ShellExec;
для скрытой установки добавьте
Flags: RunHidden;
в зависимости от выбранного компонента добавьте
Components: имя компонента; к нужным строкам из раздела run. если вам нужно добавить несколько компонентов к одной строке, то добавляйте имя компонента через пробел Components: AFP\INSTALL\AX AFP\INSTALL\ALL;

-------
Помог? От "Полезное сообщение" не откажусь!!!

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

Отправлено: 20:32, 18-05-2018 | #36


Ветеран


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

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


Цитата habib2302:
вам сюда »
С чего бы это туда. Встроенный язык InnoSetup — это, как раз-таки, здесь. Никакие «bat'ы» здесь не нужны.

Я и это: [решено] Замена строк в файле формата .xml предлагал, чтобы сделали здесь же на том же самом встроенном Паскале.

Отправлено: 21:37, 18-05-2018 | #37


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

Ветеран


Contributor


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

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


Цитата Iska:
Я и это: [решено] Замена строк в файле формата .xml предлагал, чтобы сделали здесь же на том же самом встроенном Паскале. »
Iska, да легко:
Скрытый текст

Код: Выделить весь код

[Code]
/////////////////////////////////////////////////
procedure VehiclesConfig(const FileName: string);
var
  XMLDoc, XMLNodes, XMLNode: Variant;
  XPath: string;
begin
  try
    XMLDoc := CreateOleObject('Msxml2.DOMDocument');
    XMLDoc.setProperty('SelectionLanguage', 'XPath');
    XMLDoc.async := False;
    XMLDoc.load(FileName);
    if XMLDoc.parseError.errorCode <> 0 then
      RaiseException(string(XMLDoc.parseError.reason));

    XMLNode := XMLDoc.createElement('MediaPath');
    XMLNode.setAttribute('Path', 'Vehicles');

    XPath := '/Config/MediaPath[@Path="Media" and not(following-sibling::*[1][self::MediaPath[@Path="Vehicles"]])]/following-sibling::*[1]';
  #if (Ver < 0x5050600) ; avoid VarIsNull
    XMLNodes := XMLDoc.selectNodes(XPath);
    if XMLNodes.length = 1 then
      XMLDoc.documentElement.insertBefore(XMLNode, XMLNodes.item(0));
  #else
    XMLNodes := XMLDoc.selectSingleNode(XPath);
    if not VarIsClear(XMLNodes) then
      XMLDoc.documentElement.insertBefore(XMLNode, XMLNodes);
  #endif
    XMLDoc.save(FileName);
  except
    ShowExceptionMessage;
  finally
  end;
end;

///////////////////////////
procedure InitializeWizard;
begin
  VehiclesConfig('{#SourcePath}\example.xml');
end;
Это сообщение посчитали полезным следующие участники:

Отправлено: 13:01, 19-05-2018 | #38


Аватара для ROMKA-1977

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


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

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


Здраствуйте. Помогите пож. объединить два кода.

К инсталятору добавил код фонового изображения используя isgsg.dll:
Скрытый текст

[Setup]
SourceDir=.
OutputDir=Setup
AppName=My Program
AppVerName=1.0
AppVersion=1.0
DefaultDirName={pf}\My Program
DefaultGroupName=My Program
DisableWelcomePage=false
DisableDirPage=false
DisableProgramGroupPage=false

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

[Files]
Source: "Fon.jpg"; DestDir: {tmp}; Flags: ignoreversion dontcopy nocompression
Source: "isgsg.dll"; DestDir: {tmp}; Flags: ignoreversion dontcopy nocompression
Source: {win}\help\*; DestDir: {app}\Files; Flags: external recursesubdirs createallsubdirs;

[UninstallDelete]
Type: filesandordirs; Name: "{app}"

[_Code]
function GetWindowLong(hWnd: HWND; nIndex: Integer): Longint; external 'GetWindowLongA@user32.dll stdcall delayload';
function ssInitialize(hParent:HWND;ssTimeShow:integer;FadeOut:boolean;StretchMode:integer;BkgColor:DWORD):boo lean; external 'ssInitialize@files:isgsg.dll stdcall delayload';
procedure ssDeInitialize; external 'ssDeInitialize@files:isgsg.dll stdcall delayload';
procedure ssSetBkgImage(FileName:PChar); external 'ssSetBkgImage@files:isgsg.dll stdcall delayload';

procedure InitializeWizard;
begin
ssInitialize(GetWindowLong(MainForm.Handle,-8),0,False,1,$FF000000);
ExtractTemporaryFile('Fon.jpg');
ssSetBkgImage(ExpandConstant('{tmp}')+'\Fon.jpg');
end;

procedure DeinitializeSetup;
begin
ssDeInitialize;
end;

На странице InstallingPage прописал код минимизации окна:
Скрытый текст

[_Code]
var
ResizeButton: TButton;
PageResized, Show: Boolean;

function GetSystemMetrics(nIndex:Integer):integer;
external 'GetSystemMetrics@user32.dll stdcall delayload';
function GetSystemMenu(hWnd: HWND; bRevert: BOOL): LongWord;
external 'GetSystemMenu@user32.dll stdcall';
function DeleteMenu(hMenu: LongWord; uPosition, uFlags: UINT): BOOL;
external 'DeleteMenu@user32.dll stdcall';

procedure MinimizeInstallPage();
begin
WizardForm.MainPanel.Hide;
WizardForm.Bevel1.Hide;
WizardForm.Width:= ScaleX(395);
WizardForm.Height:= ScaleY(142);
WizardForm.Left:= GetSystemMetrics(16)-ScaleX(420);
WizardForm.Top:= GetSystemMetrics(17)-ScaleX(150);
WizardForm.InnerNotebook.Left:= ScaleX(10);
WizardForm.InnerNotebook.Top:= ScaleY(10);
WizardForm.InnerNotebook.Width:= ScaleX(370);
WizardForm.StatusLabel.Left:= ScaleX(0);
WizardForm.StatusLabel.Top:= ScaleY(0);
WizardForm.StatusLabel.Width:=WizardForm.InnerNotebook.Width;
WizardForm.FileNameLabel.Left:= ScaleX(0);
WizardForm.FileNameLabel.Top:= ScaleY(20);
WizardForm.FileNameLabel.Width:= WizardForm.InnerNotebook.Width;
WizardForm.ProgressGauge.Top:= ScaleY(40);
WizardForm.ProgressGauge.Width:= WizardForm.InnerNotebook.Width;
WizardForm.CancelButton.Left:= ScaleX(220);
WizardForm.CancelButton.Top:= ScaleY(80);
WizardForm.CancelButton.BringToFront;
ResizeButton.Left:= ScaleX(60);
ResizeButton.Top:= ScaleY(80);
ResizeButton.Caption:= 'Max.';
PageResized:= True;
end;

procedure ResumeInstallPage();
begin
WizardForm.Width:= ScaleX(503);
WizardForm.Height:= ScaleY(388);
WizardForm.Position:= poScreenCenter;
if Show then begin
WizardForm.MainPanel.SetBounds(ScaleX(0), ScaleY(0), ScaleX(497), ScaleY(58));
WizardForm.MainPanel.Show;
WizardForm.Bevel1.Show;
end;
WizardForm.InnerNotebook.SetBounds(ScaleX(40), ScaleY(72), ScaleX(417), ScaleY(237));
WizardForm.StatusLabel.SetBounds(ScaleX(0), ScaleY(0), ScaleX(417), ScaleY(16));
WizardForm.FilenameLabel.SetBounds(ScaleX(0), ScaleY(16), ScaleX(417), ScaleY(16));
WizardForm.ProgressGauge.SetBounds(ScaleX(0), ScaleY(42), ScaleX(417), ScaleY(21));
WizardForm.CancelButton.SetBounds(ScaleX(412), ScaleY(327), ScaleX(75), ScaleY(23));
ResizeButton.SetBounds(ScaleX(20), ScaleY(327),ScaleX(75), ScaleY(23));
ResizeButton.Caption:= 'Min.';
PageResized:= False;
end;

procedure ResizeButtonOnClick(Sender: TObject);
begin
If PageResized then
ResumeInstallPage
else
MinimizeInstallPage;
end;

procedure InitializeWizard();
begin
ResizeButton:= TButton.Create(WizardForm);
ResizeButton.SetBounds(ScaleX(20), ScaleY(327),ScaleX(75), ScaleY(23));
ResizeButton.OnClick:= @ResizeButtonOnClick;
ResizeButton.Caption:= 'Min.';
ResizeButton.Hide;
ResizeButton.Parent:= WizardForm;
end;

procedure CurPageChanged(CurPageID: Integer);
begin
ResizeButton.Hide;
case CurPageID of
wpInstalling:
begin
Show:= true;
ResizeButton.Show;
end;
wpFinished:
begin
Show:= false;
ResumeInstallPage;
DeleteMenu(GetSystemMenu(WizardForm.Handle,False),$F060,0);
end;
end;
end;

procedure BtnDisable();
begin
ResizeButton.Enabled := False;
end;

Необходимо выполнить следующее:
1. При клике на кнопку "Min" фоновое изображение закрывается
2. При клике на кнопку "Max" фоновое изображение отображается

Последний раз редактировалось ROMKA-1977, 28-05-2018 в 11:54.


Отправлено: 11:31, 28-05-2018 | #39


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

Ветеран


Contributor


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

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


Цитата ROMKA-1977:
Необходимо выполнить следующее:
1. При клике на кнопку "Min" фоновое изображение закрывается
2. При клике на кнопку "Max" фоновое изображение отображается »
ROMKA-1977, в секцию Setup добавить WindowVisible=yes и WindowShowCaption=no, в процедуре ResizeButtonOnClick в конце дописать MainForm.Visible := not PageResized;

Отправлено: 17:15, 29-05-2018 | #40



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

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

Похожие темы
Название темы Автор Информация о форуме Ответов Последнее сообщение
Скрипты 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




 
Переход