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

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

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

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

Ветеран


Contributor


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


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

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


Изменения
Автор: El Sanchez
Дата: 30-03-2023

Внимание!!!
Данная тема не предназначена для обсуждения скриптов! Для этого создана отдельная тема!

Скрипты Inno Setup. Помощь и советы





Описание

Inno Setup - это бесплатный инсталлятор для программ Windows. Впервые появился в 1997 году, Inno Setup сегодня, конкурирует и даже превосходит многие коммерческие инсталляторы по возможностям и стабильности.

Основные достоинства:
  • Поддержка всех версий Windows используемых сегодня: Windows 10, Windows 8, Windows Server 2012, Windows 7, Windows Server 2008 R2, Windows Vista, Windows Server 2008, Windows XP, Windows Server 2003 и Windows 2000 (независимо от пакета обновлений);
  • Обширная поддержка инсталляций 64-битных приложений на 64-битных выпусках Windows. Также поддерживает x64-разрядные процессоры. (При использовании процессоров Itanium необходимо установить Service Pack);
  • Поддержка создания одного файла EXE, что облегчает установку вашей программы через сеть. Также поддерживается разбивка на диски;
  • Стандартный стиль интерфейса мастера Windows 2000/XP;
  • Настраиваемые типы установки, например: Полная (Full), Компактная (Compact), Выборочная (Custom);
  • Возможность создания деинсталлятора;
  • Установка файлов:
    Включает интегрированную поддержку сжатия файлов (bzip2 и 7-Zip LZMA/LZMA2). Инсталлятор может сравнивать версии файлов, заменять загруженные в память файлы, ведет подсчет общедоступных файлов, регистрирует DLL/OCX и библиотеки типов, устанавливает шрифты;
  • Создание ярлыков, включая меню Пуск и на Рабочем столе;
  • Работа с системным реестром и файлами *.ini;
  • Имеет встроенную поддержку скриптов на Паскале;
  • Поддерживает создание инсталляторов на различных языках;
  • Поддержкивает пароли и шифрование инсталляторов;
  • Поддерживается тихая установка и тихая деинсталляция, с помощью ключей командной строки;
  • Доступен полный исходный код (Borland Delphi 2.0-5.0 и 2009).

Основной бесплатный конкурент - NSIS.

Последняя стабильная версия - 6.2.2 [15.02.2023]. История версий.
Официальные сборки Inno Setup 6.2.2:
Редакторы iss-скриптов:
  • Расширенная версия Inno Setup от Restools

    Сайт: http://restools.hanzify.org/
    Скачать:Рекомендуется к применению из-за огромного количества компонентов, функций и процедур, удобного интерфейса, наличия отладчика и Form Designer. Собран на основе исходников Inno Setup 5.5.1.
    Инструкция по установке

    Инструкция по установке:
    1. Установите ispack-5.5.1.exe или ispack-5.5.1-unicode.exe (5.5.1 - номер официальной версии Inno Setup для последующего обновления расширенной версией);
    2. Скачайте Inno Setup Compiler, распакуйте;
    3. Из одноимённой папки, в соответствии с установленной версией (ANSI или Unicode), скопируйте два файла (Compil32.exe, Templates.dat) в каталог Inno Setup (по умолчанию: C:\Program Files\Inno Setup 5\). Появится сообщение с подтверждением о замене файла, нажимаем 'Да'.
      Примечание: если у вас Unicode версия, то дополнительно примените твик реестра (файл CourierNew.reg) из папки UnicodeFontLink и перезагрузите компьютер.
    4. Скачайте Inno ISCmplr Setup, распакуйте;
    5. Из одноимённой папки, в соответствии с установленной версией (InnoSetup_ANSI или InnoSetup_Unicode), из подпапки FullVCL скопируйте все файлы в каталог Inno Setup (по умолчанию: C:\Program Files\Inno Setup 5\). Появится сообщение с подтверждением о замене файла, нажимаем 'Да'.

  • Inno Script Studio от Kymoto Solutions

    Сайт: https://www.kymoto.org/
    Скачать: Inno Script Studio v2.5.1 [28.11.2020]
    Inno Script Studio является новым, интуитивно понятным, графическим интерфейсом для создания и компиляции скриптов Inno Setup.
Дополнительно



Распаковщики/декомпиляторы инсталляторов Inno Setup

Параметры командной строки инсталлятора (ссылка)

Отправлено: 00:25, 24-08-2009

 

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


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

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


дел

Последний раз редактировалось Raymans, 11-10-2019 в 14:30.


Отправлено: 21:38, 10-10-2019 | #581



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

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


Аватара для habib2302

Ветеран


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

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


web_form, IsWin7Logo 0.9 Beta VoLT
Или через ботву https://drive.google.com/file/d/1Hzb...SXscKVNIUD1LVi

Вот готовый вариант https://drive.google.com/file/d/1cCX...JlyfIGgpq3FdMu

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


Последний раз редактировалось habib2302, 07-12-2019 в 17:01.


Отправлено: 16:09, 07-12-2019 | #582


Аватара для habib2302

Ветеран


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

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


web_form,
На 4 скрине я перенес необходимые файлы, которые требуются при запуске инсталлятора в функцию InitializeSetup

Скрины

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


Отправлено: 11:02, 09-12-2019 | #583


Аватара для habib2302

Ветеран


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

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


web_form,
Код: Выделить весь код
lPLogo:= ImgLoad(WizardForm.Handle, ExpandConstant('{tmp}\logo.png'), ScaleX(214), ScaleY(368), ScaleX(158), ScaleY(37), True, True);
Первые два 214 и 368 значения это координаты картинки, последние два 158 и 37 это размер картинки

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

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

Отправлено: 19:03, 09-12-2019 | #584


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


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

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


Добрый день Форумчане! Есть вопрос, на который ни как не могу найти ответ...
Некая программа при установке создает в реестре путь к исполняемому файлу Test.ехе
При выходе обновления, приведенный ниже скрипт проверят существует ли даний путь в реестре, и наличие по даному пути файла Test.ехе
Если путь и файл существуют программа устанавивает обновление, в противном случае видает сообщение (Установка Прекращена, Test.ехе не найден)
Сам Test.ехе имеет версию файла 1.3, так вот собствинно вопрос - как при обновлении проверить версию файла Test.ехе, и в случае если версия файла Test.ехе ниже 1.3, прекратить установку виводя собщение.
code

function InitializeSetup(): Boolean;
begin
if FileExists(ExpandConstant('{reg:HKLM\SOFTWARE\Test,PATH_APPLICATION}\Test.exe')) then
begin
Result:= True;
end
else
begin
MsgBox('Установка Прекращена, Test.ехе не найден', mbCriticalError, MB_OK);
Result:= False;
end;
end;


Знаю что это реально cделать не прибегая к стороннему софту, пробую писать код полагаясь на примеры найденные в интернете, и читая мануал но никак. Не хватает квалификации...
Зарания Благодарю.

Последний раз редактировалось Beavimo, 07-01-2020 в 12:06.


Отправлено: 11:37, 07-01-2020 | #585


Старожил


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

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


Beavimo,
Немножко многословно получилось...
Код: Выделить весь код
[Setup]
AppName=testApp
AppVersion=0.1
DisableWelcomePage=yes
DefaultDirName={tmp}\testApp
OutputDir=.
OutputBaseFilename=testApp
PrivilegesRequired=lowest

[code]
type
	TFileVer = array[1..4] of Integer;
	
procedure CutVerNumber(var S: String; var N: Integer);
var
	position: Integer;
begin
	position := Pos('.', S);
	if position > 0 then
		begin
			N := StrToInt(Copy(S, 1, position - 1));
			S := Copy(S, position + 1, 99);
		end
	else
		begin
			N := StrToInt(S);
			S := '';
		end;
end;

function TFileVerToString(V: TFileVer): String;
var
	i: Integer;
begin
	Result := IntToStr(V[1]);
	for i := 2 to 4 do
		Result := Result + '.' + IntToStr(V[i]);
end;

function StringToTFileVer(S: String): TFileVer;
var
	i: Integer;
	V: TFileVer;
begin
	for i := 1 to 4 do
		CutVerNumber(S, V[i]);
	
	Result := V;
end;

function IsNotLowerVersion(currentVersion, compareVersion: TFileVer): Boolean;
var
	i: Integer;
begin
	Result := False;
	
	for i := 1 to 4 do
		if currentVersion[i] < compareVersion[i] then
			Exit;
	
    Result := True;
end;

function InitializeSetup(): Boolean;
var
	fileName: String;
	versionString: String;
	minVersion: TFileVer;
	currentVersion: TFileVer;
begin
	// Имя файла:
	fileName := ExpandConstant('{reg:HKLM\SOFTWARE\Test,PATH_APPLICATION}\Test.exe');
	// Требуемая версия (1.3.0.0):
	minVersion[1] := 1;
	minVersion[2] := 3;
	minVersion[3] := 0;
	minVersion[4] := 0;
	
	if Not FileExists(fileName) then begin
		MsgBox('Установка Прекращена:'#13#13 + 'Файл `' + ExtractFileName(fileName) + '` не найден', mbCriticalError, MB_OK);
		Result := False;
		Exit;
	end;
	
	GetVersionNumbersString(fileName, versionString);
	currentVersion := StringToTFileVer(versionString);
	
	if IsNotLowerVersion(currentVersion, minVersion) then
		Result := True
	else begin
		MsgBox('Установка Прекращена:' \
		+ #13#13'Версия файла `' + ExtractFileName(fileName) + '`: ' + TFileVerToString(currentVersion) \
		+ #13#13'Требуется версия как минимум: ' + TFileVerToString(minVersion) \
		, mbCriticalError, MB_OK);
		Result := False;
	end;
end;


add:
Улучшенная версия на следующей странице

Последний раз редактировалось iglezz, 08-01-2020 в 18:04. Причина: узнал про тег noparse :)


Отправлено: 18:53, 07-01-2020 | #586


Ветеран


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

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


Цитата iglezz:
<-- убрать пробелы!!! (защита от форумного парсера) »
Защита от парсера — тэг BBCode «noparse»:

Код: Выделить весь код
[Setup]
AppName=testApp
AppVersion=0.1
DisableWelcomePage=yes
DefaultDirName={tmp}\testApp
OutputDir=.
OutputBaseFilename=testApp
PrivilegesRequired=lowest

[code]
type
	TFileVer = array[1..4] of Integer;
…
Это сообщение посчитали полезным следующие участники:

Отправлено: 20:27, 07-01-2020 | #587


Аватара для Dodakaedr

Ветеран


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

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


Цитата Beavimo:
Сам Test.ехе имеет версию файла 1.3, так вот собствинно вопрос - как при обновлении проверить версию файла Test.ехе, и в случае если версия файла Test.ехе ниже 1.3, прекратить установку виводя собщение. »
Если есть желание и возможность, то проверьте мой код на практичность (только что сочинил, не тестировал).
Код проверяет первые три цифры.
Скрытый текст

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

[Code]
function CompareVersion(s1, s2: string): integer;
var
  iVer1, iVer2, iVer3, iVer4, cVer1, cVer2, cVer3, cVer4, tmp: string;
begin
  Result := -1;
  iVer1 := Copy(s1, 0, Pos('.', s1)-1);
  tmp := Copy(s1, Pos(iVer1, s1)+Length(iVer1)+1, Length(s1)); 
  iVer2 := Copy(tmp, 0, Pos('.', tmp)-1); 
  tmp := Copy(s1, Pos(iVer2, s1)+Length(iVer2)+1, Length(s1)); 
  iVer3 := Copy(tmp, 0, Pos('.', tmp)-1); 
  iVer4 := Copy(s1, Pos(iVer3, s1)+Length(iVer3)+1, Length(s1)); 
  cVer1 := Copy(s2, 0, Pos('.', s2)-1);
  tmp := Copy(s2, Pos(cVer1, s2)+Length(cVer1)+1, Length(s2));
  cVer2 := Copy(tmp, 0, Pos('.', tmp)-1); 
  tmp := Copy(s2, Pos(cVer2, s2)+Length(cVer2)+1, Length(s2));
  cVer3 := Copy(tmp, 0, Pos('.', tmp)-1); 
  cVer4 := Copy(s2, Pos(cVer3, s2)+Length(cVer3)+1, Length(s2)); 
  if (StrToInt(iVer1) > StrToInt(cVer1)) then Result := 1 else
  if (StrToInt(iVer1) = StrToInt(cVer1)) then
  if (StrToInt(iVer2) > StrToInt(cVer2)) then Result := 1 else
  if (StrToInt(iVer2) = StrToInt(cVer2)) then
  if (StrToInt(iVer3) > StrToInt(cVer3)) then Result := 1 else
  if (StrToInt(iVer3) = StrToInt(cVer3)) then
  if (StrToInt(iVer4) > StrToInt(cVer4)) then Result := 1 else
  if (StrToInt(iVer1) = StrToInt(cVer1)) then
  if (StrToInt(iVer2) = StrToInt(cVer2)) then
  if (StrToInt(iVer3) = StrToInt(cVer3)) then
  if (StrToInt(iVer4) = StrToInt(cVer4)) then Result := 0;
end;

function InitializeSetup(): Boolean;
var
  sFile, sVer: string;
begin
  sFile := ExpandConstant('{reg:HKLM\SOFTWARE\Test,PATH_APPLICATION}\Test.exe');
  Result := FileExists(sFile);
  if not result then MsgBox('Установка прекращена, Test.ехе не найден', mbCriticalError, MB_OK) else
  begin
    GetVersionNumbersString(sFile, sVer);
    if CompareVersion(sVer, '1.3.0.0') > 0 then Result := True else
    begin
      MsgBox('Установка прекращена, не соответствует версия', mbCriticalError, MB_OK);
      Result := False;
    end;
  end;
end;

-------
Inno Setup 5 Ultra Unicode


Последний раз редактировалось Dodakaedr, 08-01-2020 в 20:49. Причина: Обновил функцию CompareVersion. Теперь проверяет всю версию.

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

Отправлено: 21:01, 07-01-2020 | #588


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


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

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


iglezz, cпасибо что откликнулся попробую разобраться, может вырву кусок кода и попробую склеить со своим, а сорян вижу тут уже склейку зделал ..... сча заценим если прокатит буду пробывать как нить уменшыть код, люблю кода всьо простинько и красивинько

Последний раз редактировалось Beavimo, 08-01-2020 в 08:46.


Отправлено: 08:39, 08-01-2020 | #589


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


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

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


Код от iglezz прекрасно отрабатывает первые три значения версии. Я пока ковыряю код дабы упростить его, если че получится выложу сюда.... Но у меня есть еще один вопрос, думаю что без стороннего софто зделать не реально, но спрошу у вас знатоков.... Когда компилируется файл.exe, в его описании всегда в конце приписка Setup, можна както от нее избавится, или написать чот своё?

Отправлено: 10:31, 08-01-2020 | #590



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

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

Похожие темы
Название темы Автор Информация о форуме Ответов Последнее сообщение
Утилиты - [addon] Inno Setup CrOsP Наборы обновлений для Windows XP/2003/Windows 7 33 11-05-2011 16:03
Inno Setup 5.3.6 OSZone Software Новости программного обеспечения 0 15-11-2009 17:30
[архив] Inno Setup .:[все вопросы]:. Mchik Автоматическая установка приложений 1329 23-08-2009 20:13
Скрипты Inno Setup Compiler QAZAK Автоматическая установка приложений 7 15-01-2007 17:59
Inno Setup tradeukraine Вебмастеру 3 13-06-2006 20:39




 
Переход