|
Внимание, важное сообщение: Дорогие Друзья!
В ноябре далекого 2001 года мы решили создать сайт и форум, которые смогут помочь как начинающим, так и продвинутым пользователям разобраться в операционных системах. В 2004-2006г наш проект был одним из самых крупных ИТ ресурсов в рунете, на пике нас посещало более 300 000 человек в день! Наша документация по службам Windows и автоматической установке помогла огромному количеству пользователей и сисадминов. Мы с уверенностью можем сказать, что внесли большой вклад в развитие ИТ сообщества рунета. Но... время меняются, приоритеты тоже. И, к сожалению, пришло время сказать До встречи! После долгих дискуссий было принято решение закрыть наш проект. 1 августа форум переводится в режим Только чтение, а в начале сентября мы переведем рубильник в положение Выключен Огромное спасибо за эти 24 года, это было незабываемое приключение. Сказать спасибо и поделиться своей историей можно в данной теме. С уважением, ваш призрачный админ, BigMac... |
|
| Компьютерный форум OSzone.net » Автоматическая установка Windows » Автоматическая установка приложений » Скрипты Inno Setup. Помощь и советы [часть 7] |
|
|
Скрипты Inno Setup. Помощь и советы [часть 7]
|
|
Ветеран Сообщения: 1274 |
Внимание! Данная тема предназначена только для обсуждения написания скриптов !
Остальные вопросы, а также последние версии компилятора в теме Inno Setup. Прочие вопросы. Показать/скрыть: Справка, руководство, примеры:
Показать/скрыть: Ссылки на примеры скриптов:
Показать/скрыть: Дополнительные программы для Inno Setup:
Предыдущие ветки обсуждения по ссылкам ниже и в прикреплённых архивах: Скрипты Inno Setup. Помощь и советы (Archive Pack 1):
Скрипты Inno Setup. Помощь и советы [часть 6] |
|
|
Отправлено: 11:48, 10-03-2014 |
|
Пользователь Сообщения: 110
|
Профиль | Отправить PM | Цитировать Всем привет, как сделать так, чтобы установка продолжалась в том случае если в папку куда устанавливаешь есть файл WorldOfTanks.exe. Т.е. Если в папке куда устанавливаешь нет файла WorldOfTanks.exe, то выскакивает окно, что сюда установить компоненты нельзя.
Заранее спасибо! |
|
Отправлено: 12:16, 10-03-2014 | #2 |
|
Пользователь Сообщения: 78
|
Профиль | Отправить PM | Цитировать Farser21,
|
|
Отправлено: 13:31, 10-03-2014 | #3 |
|
Пользователь Сообщения: 110
|
Профиль | Отправить PM | Цитировать Mailchik, спасибо работает. Но есть одна проблема. Когда я выбираю папку без файла WorldOfTanks.exe, выскакивает окно, я нажимаю ок. Потом оно сразу перекидывает меня уже на следующую страницу выбора компонентов. Можно сделать, чтобы при нажатие ок на окошке, оставалось на данной странице?
Возможно я неправильно совместил? Как правильно соединить это? |
|
Последний раз редактировалось Farser21, 10-03-2014 в 14:16. Отправлено: 14:05, 10-03-2014 | #4 |
|
Ветеран Сообщения: 1640
|
Профиль | Отправить PM | Цитировать есть такая функция сравнения версий
function CompareVersion(VerMStoCompare, VerLStoCompare: Cardinal; const FileName2: string): Integer;
{ Данная функция сравнивает версии файлов указанных в FileName1 и FileName2.
Возвращаемые значения:
-2: если не смогли прочитать версию любого из файлов;
-1: FileName1 > FileName2;
0: FileName1 = FileName2;
1: FileName1 < FileName2;
FileName1 = передаваемые числа версий для сравнения с файлом FileName2, условия теже:
-1: файл "старый"
0: версии равны
1: файл новее}
var
VerMS1, VerLS1, VerMS2, VerLS2: Cardinal;
fMS1, fLS1, fMS2, fLS2: Extended;
begin
Result := -2; VerMS1 := VerMStoCompare; VerLS1 := VerLStoCompare;
if GetVersionNumbers(FileName2, VerMS2, VerLS2)
//and GetVersionNumbers(FileName2, VerMS2, VerLS2)
then
begin
fMS1 := StrToFloat(IntToStr(VerMS1 shr 16) + '.' + IntToStr(VerMS1 and $FFFF));
fLS1 := StrToFloat(IntToStr(VerLS1 shr 16) + '.' + IntToStr(VerLS1 and $FFFF));
fMS2 := StrToFloat(IntToStr(VerMS2 shr 16) + '.' + IntToStr(VerMS2 and $FFFF));
fLS2 := StrToFloat(IntToStr(VerLS2 shr 16) + '.' + IntToStr(VerLS2 and $FFFF));
case fMS1 = fMS2 of
True:
case fLS1 = fLS2 of
True : Result := 0;
False:
case fLS1 > fLS2 of
True : Result := -1;
False: Result := 1;
end;
end;
False:
case fMS1 > fMS2 of
True : Result := -1;
False: Result := 1;
end;
end;
end;
// MsgBox(FileName2 + #13#10 +
// 'VerMS1 = ' + IntToStr(VerMS1) + ' VerLS1 = ' + IntToStr(VerLS1) + #13#10 +
// 'VerMS2 = ' + IntToStr(VerMS2) + ' VerLS2 = ' + IntToStr(VerLS2) + #13#10 +
// IntToSTR(Result), mbInformation, MB_OK);
end;
Подскажите, пожалуйста, как исправить ______________________ Farser21, прятать надо не под спойлер, а под тег code function NextButtonClick(CurPageID: Integer): Boolean;
begin
Result := True;
case CurPageID of
wpSelectDir:
if not FileExists(ExpandConstant('{app}\WorldOfTanks.exe')) then begin
MsgBox('Сюда установить компоненты нельзя!', mbError, MB_OK);
Result := False;
end; //if
if FileExists(ExpandConstant('{app}')+'\WorldOfTanks.exe') then begin
if FileVersion(ExpandConstant('{app}')+'\WorldOfTanks.exe') < '0.9.0' then begin
MsgBoxEx(WizardForm.Handle, 'Моды не будут работать на данной версии игры! Моды предназначены для версии патча 0.9.0 ', 'Моды не подходят у данному патчу World of Tanks', MB_OK or MB_ICONWARNING, 0, 0);
Result:= false;
end;end;//if
end;//case
end;
|
|
|
------- Последний раз редактировалось R.i.m.s.k.y., 10-03-2014 в 14:54. Отправлено: 14:45, 10-03-2014 | #5 |
|
Пользователь Сообщения: 110
|
Профиль | Отправить PM | Цитировать R.i.m.s.k.y., спасибо. Все работает.
|
|
Отправлено: 15:04, 10-03-2014 | #6 |
|
Ветеран Сообщения: 1640
|
Профиль | Отправить PM | Цитировать Господа состоятельные кроты, помогите разобраться:
А) пользователь user запускает windows, приходит одмин и запускает установщик от себя - admin Кто CurrentUser и OriginalUser в терминах Inno? (runasoriginaluser & runascurentuser) Б) unins.exe понимает переменные вида {src}? т.е. если программа установлена в C:\program files\prog и там же лежит деинсталлятор, созданный инно в процессе установки unins000.exe, можно проверить наличие файла C:\program files\prog\file.txt по ExpandConstant('{src}\prog\file.txt') в процессе удаления программы? |
|
------- Последний раз редактировалось R.i.m.s.k.y., 10-03-2014 в 15:46. Отправлено: 15:34, 10-03-2014 | #7 |
|
SHVtYW4= Сообщения: 3451
|
Профиль | Отправить PM | Цитировать Архив содержит:
ITDownloader + Rus ITCallback ITTray |
|
------- Отправлено: 16:00, 10-03-2014 | #8 |
|
Новый участник Сообщения: 6
|
Профиль | Отправить PM | Цитировать Добрый день всем.
Можно ли разделить секцию [Tasks] на 2 странички? У меня там сейчас 2 независимые группы exclusive опций. После добавления новых вариантов в одну из групп они перестали помещаться на одну страничку без скроллбара. Видел в архиве этой темы пример кода по созданию своей странички с чекбоксом и сохранению его состояния в переменной кода. Но остается непонятным как активировать выбранный вариант в группе опций. Может есть какой-нибудь другой способ разделить группы по страничкам? Farser21, R.i.m.s.k.y., для сравнения версий я написал себе вот такой велосипед: type
TVersionInfo = record
Major, Minor, Release, Build: WORD;
end;
function GetFileVersion(const FileName: string): TVersionInfo;
var
VerMS, VerLS: Cardinal;
begin
if GetVersionNumbers(FileName, VerMS, VerLS) then
begin
Result.Major := VerMS shr 16;
Result.Minor := VerMS and $FFFF;
Result.Release := VerLS shr 16;
Result.Build := VerLS and $FFFF;
end
else
begin
Result.Major := 0;
Result.Minor := 0;
Result.Release := 0;
Result.Build := 0;
end;
end;
function GetInt(var Str: String): Integer;
var
DotPos: Integer;
begin
Result := 0;
DotPos := Pos('.', Str);
if DotPos > 0 then
begin
Result := StrToIntDef(Copy(Str, 1, DotPos - 1), 0);
Str := Copy(Str, DotPos + 1, Length(Str) - DotPos);
end
else
begin
Result := StrToIntDef(Str, 0);
Str := '';
end;
end;
function StrToFileVer(const FileVerStr: String): TVersionInfo;
var
LocalStr: String;
begin
LocalStr := FileVerStr;
Result.Major := GetInt(LocalStr);
Result.Minor := GetInt(LocalStr);
Result.Release := GetInt(LocalStr);
Result.Build := GetInt(LocalStr);
end;
function CompareVer(Ver1, Ver2: TVersionInfo): Integer;
// Ver1 > Ver2 ====> result > 0
// Ver1 = Ver2 ====> result = 0
// Ver1 < Ver2 ====> result < 0
begin
Result := Integer(Ver1.Major) - Integer(Ver2.Major);
if Result = 0 then
begin
Result := Integer(Ver1.Minor) - Integer(Ver2.Minor);
if Result = 0 then
begin
Result := Integer(Ver1.Release) - Integer(Ver2.Release);
if Result = 0 then
begin
Result := Integer(Ver1.Build) - Integer(Ver2.Build);
end;
end;
end;
end;
function InitializeSetup(): Boolean;
var
BSVer, UpdateVer, MinAppVer: TVersionInfo;
begin
// Проверка на совместимость установленной версии с этим апдейтом
BSVer := GetFileVersion('MyPath\MyApp.exe');
UpdateVer := StrToFileVer(ExpandConstant('{#MyAppVersion}'));
MinAppVer := StrToFileVer(ExpandConstant('{#MinAppVersionForUpdate}'));
Result := CompareVer(MinAppVer, BSVer) <= 0;
if not Result then
begin
MsgBox(Format(ExpandConstant('{cm:MyAppIsTooOld}'), [BSVer.Major, BSVer.Minor, BSVer.Release, BSVer.Build, MinAppVer.Major, MinAppVer.Minor, MinAppVer.Release, MinAppVer.Build]), mbError, MB_OK);
Exit;
end;
Result := CompareVer(UpdateVer, BSVer) >= 0;
if not Result then
begin
MsgBox(Format(ExpandConstant('{cm:MyAppIsNewer}'), [BSVer.Major, BSVer.Minor, BSVer.Release, BSVer.Build]), mbError, MB_OK);
Exit;
end;
// ===============================================================
end;
|
|
Отправлено: 18:06, 10-03-2014 | #9 |
|
Ветеран Сообщения: 1274
|
Профиль | Отправить PM | Цитировать Цитата R.i.m.s.k.y.:
Цитата:
Цитата R.i.m.s.k.y.:
Цитата R.i.m.s.k.y.:
Цитата R.i.m.s.k.y.:
|
|||||
|
Отправлено: 19:32, 10-03-2014 | #10 |
|
|
Участник сейчас на форуме |
|
Участник вне форума |
![]() |
Автор темы |
![]() |
Сообщение прикреплено |
| |||||
| Название темы | Автор | Информация о форуме | Ответов | Последнее сообщение | |
| Скрипты 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 | |
| [архив] Скрипты Inno Setup. Помощь и советы [часть 2] | Serega | Автоматическая установка приложений | 2651 | 08-11-2010 18:34 | |
|