|
Внимание, важное сообщение: Дорогие Друзья!
В ноябре далекого 2001 года мы решили создать сайт и форум, которые смогут помочь как начинающим, так и продвинутым пользователям разобраться в операционных системах. В 2004-2006г наш проект был одним из самых крупных ИТ ресурсов в рунете, на пике нас посещало более 300 000 человек в день! Наша документация по службам Windows и автоматической установке помогла огромному количеству пользователей и сисадминов. Мы с уверенностью можем сказать, что внесли большой вклад в развитие ИТ сообщества рунета. Но... время меняются, приоритеты тоже. И, к сожалению, пришло время сказать До встречи! После долгих дискуссий было принято решение закрыть наш проект. 1 августа форум переводится в режим Только чтение, а в начале сентября мы переведем рубильник в положение Выключен Огромное спасибо за эти 24 года, это было незабываемое приключение. Сказать спасибо и поделиться своей историей можно в данной теме. С уважением, ваш призрачный админ, BigMac... |
|
| Компьютерный форум OSzone.net » Автоматическая установка Windows » Автоматическая установка приложений » Inno Setup. Прочие вопросы |
|
|
Inno Setup. Прочие вопросы
|
|
Ветеран Сообщения: 1274 |
Внимание!!! Данная тема не предназначена для обсуждения скриптов! Для этого создана отдельная тема! Скрипты Inno Setup. Помощь и советы Описание
Inno Setup - это бесплатный инсталлятор для программ Windows. Впервые появился в 1997 году, Inno Setup сегодня, конкурирует и даже превосходит многие коммерческие инсталляторы по возможностям и стабильности. Основные достоинства:
Основной бесплатный конкурент - NSIS. Последняя стабильная версия - 6.4.3 [03.05.2025]. История версий. Официальные сборки Inno Setup 6.4.3: Редакторы iss-скриптов:
Дополнительно
Справка
Русификаторы
Распаковщики/декомпиляторы инсталляторов Inno Setup
Параметры командной строки инсталлятора (ссылка) |
|
|
Отправлено: 00:25, 24-08-2009 |
|
Новый участник Сообщения: 11
|
Профиль | Отправить PM | Цитировать дел
|
|
Последний раз редактировалось Raymans, 11-10-2019 в 14:30. Отправлено: 21:38, 10-10-2019 | #581 |
|
Ветеран Сообщения: 862
|
Профиль | Отправить 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 |
|
Ветеран Сообщения: 862
|
Профиль | Отправить PM | Цитировать |
|
------- Отправлено: 11:02, 09-12-2019 | #583 |
|
Ветеран Сообщения: 862
|
Профиль | Отправить PM | Цитировать |
|
------- Отправлено: 19:03, 09-12-2019 | #584 |
|
Пользователь Сообщения: 76
|
Профиль | Отправить 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
|
Профиль | Отправить 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
|
Профиль | Отправить PM | Цитировать Цитата iglezz:
|
|
|
Отправлено: 20:27, 07-01-2020 | #587 |
|
Ветеран Сообщения: 863
|
Профиль | Отправить PM | Цитировать Цитата Beavimo:
Скрытый текст
[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;
|
|
|
------- Последний раз редактировалось Dodakaedr, 08-01-2020 в 20:49. Причина: Обновил функцию CompareVersion. Теперь проверяет всю версию. Отправлено: 21:01, 07-01-2020 | #588 |
|
Пользователь Сообщения: 76
|
Профиль | Отправить PM | Цитировать iglezz, cпасибо что откликнулся
попробую разобраться, может вырву кусок кода и попробую склеить со своим, а сорян вижу тут уже склейку зделал ..... сча заценим если прокатит буду пробывать как нить уменшыть код, люблю кода всьо простинько и красивинько |
|
Последний раз редактировалось Beavimo, 08-01-2020 в 08:46. Отправлено: 08:39, 08-01-2020 | #589 |
|
Пользователь Сообщения: 76
|
Профиль | Отправить PM | Цитировать Код от iglezz прекрасно отрабатывает первые три значения версии. Я пока ковыряю код дабы упростить его, если че получится выложу сюда.... Но у меня есть еще один вопрос, думаю что без стороннего софто зделать не реально, но спрошу у вас знатоков.... Когда компилируется файл.exe, в его описании всегда в конце приписка Setup, можна както от нее избавится, или написать чот своё?
|
|
Отправлено: 10:31, 08-01-2020 | #590 |
|
|
Участник сейчас на форуме |
|
Участник вне форума |
![]() |
Автор темы |
![]() |
Сообщение прикреплено |
| |||||
| Название темы | Автор | Информация о форуме | Ответов | Последнее сообщение | |
| Утилиты - [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 | |
|