Показать полную графическую версию : Скрипты Inno Setup. Помощь и советы [часть 6]
Mat_y, nik1967,
http://i58.fastpic.ru/thumb/2013/1017/52/86aa4578978bbe22dac727109fe43f52.jpeg (http://fastpic.ru/view/58/2013/1017/86aa4578978bbe22dac727109fe43f52.png.html)
APTEM2, Вам же сказали, уберите|переименуйте 2й CancelBtn. На вашем же скриншоте видно в var ... NoIconsCheck, CancelBtn, MinBtn, CancelBtn
А на счет аналога GroupDescription для секции Components никто не знает?
Shkutu,
Так а вот с этим что делать
http://i58.fastpic.ru/thumb/2013/1017/db/f5760ac71c1984e7b7af2d6216605cdb.jpeg (http://fastpic.ru/view/58/2013/1017/f5760ac71c1984e7b7af2d6216605cdb.png.html)
Вот сам скрипт http://rghost.ru/49047898
APTEM2,
Допишите в type
Pchar =PansiChar;
Gnom_aka_Lexander
17-10-2013, 14:24
Допишите в Var »
не в var а в type
habib2302
17-10-2013, 22:36
доброе время суток.дайте мне пожалуйста скрипт на завершение работы процесса до установки и до удаления программы
Johny777
18-10-2013, 01:36
habib2302,
Mat_y,
В шапку темы заглянуть не судьба?
"Определение информации о версии файла" , "Закрытие процесса"
Mat_y,
и чем тебя не устраивает метод GetFileVersion FileSystemObject-а, который предложил nik1967 ?
http://msdn.microsoft.com/en-us/library/b4e05k97%28v=vs.84%29.aspx
он как раз таки и возвращает версию файла в виде строки
и нет никакой нужды лезть в дебри WinApi
подправил функцию:
function FileVersion(const FilePath: String): String;
var
oFS: Variant;
begin
oFS := CreateOleObject('Scripting.FileSystemObject');
try
Result := oFS.GetFileVersion(FilePath);
except
end;
end;
просто сравнивай строки...
и чем тебя не устраивает метод GetFileVersion FileSystemObject-а, который предложил nik1967 »
Да Вы не поняли...сам метод меня полностью устраивает... я спросил "как дальше сравнить полученную версию файла с эталонной (допустим версия должна быть выше 2.0.0.1 и если версия ниже, то выдать окно с сообщением, что на данную версию продолжить установку нельзя).
Антон_Мураткин@vk
18-10-2013, 10:06
Народ подскажите как с этим бороться?
http://i2.imageban.ru/thumbs/2013.10.18/11547e18459849ce5ca21a04cad69e9e.png (http://imageban.ru/show/2013/10/18/11547e18459849ce5ca21a04cad69e9e/png)
Это происходит при удаления игры.
Mat_y, [setup]
AppName=My Application
AppVersion=1.5
DefaultDirName={pf}\My Application
OutputDir=.
DirExistsWarning=no
[code]
function FileVersion(const FilePath: String): String;
var
oFS: Variant;
begin
oFS:= CreateOleObject('Scripting.FileSystemObject');
try
Result:= oFS.GetFileVersion(FilePath);
except
end;
end;
function NextButtonClick(CurPageID: Integer): Boolean;
begin
Result:= true;
case CurPageID of
wpSelectDir:
begin
if FileExists(ExpandConstant('{app}')+'\GameName.exe') then begin
if FileVersion(ExpandConstant('{app}')+'\GameName.exe') < '2.0.0.1' then begin
MsgBoxEx(WizardForm.Handle, 'На данную версию невозможно продолжить установку!', 'Не актуальная версия файла', MB_OK or MB_ICONWARNING, 0, 0);
Result:= false;
end;
end else begin
MsgBoxEx(WizardForm.Handle, 'По данному пути игра не найдена! Еще раз проверьте путь установки!', 'Неверно указан путь к игре', MB_OK or MB_ICONWARNING, 0, 0);
Result:= false;
end;
end;
end;
end;
Johny777
18-10-2013, 14:04
nik1967,
) < '2.0.0.1' then »
так не получится (хотя было бы очень практично ! ), тк нужно сравнивать числа а не строку
Пардон я в прошлом говорил что нужно сравнивать стоки, но не знал что
допустим версия должна быть выше 2.0.0.1 и если версия ниже »
нужен подробный результат сравнения
вот накатал функцию сравнения версий, по примеру станет ясно что она возвращает и как работает:
const
FILE_VERSION_STR_LEN = 7;
function CompareFileVersions(const AVer, BVer: String): Integer;
var
i: Integer;
begin
for i := 1 to FILE_VERSION_STR_LEN do
begin
if i and 1 = 0 then Continue; // если порядковый номер в строке чётный, то переходим к след. витку цикла, тк это точка
Result := Ord(AVer[i]) - Ord(BVer[i]);
if Result <> 0 then Break;
end;
end;
procedure InitializeWizard();
var
iResult: Integer;
begin
iResult := CompareFileVersions('7.0.0.1', '7.0.0.0');
if iResult = 0 then MsgBox('Same Version', mbInformation, MB_OK)
else
if iResult < 0 then MsgBox('AVer < BVer', mbInformation, MB_OK)
else
if iResult > 0 then MsgBox('AVer > BVer', mbInformation, MB_OK);
end;
PS: делал упор на быстродействие :)
Всем привет! Кто-нибудь знает, можно ли из инно запускать параметризованный sql скрипт (transact-sql) и как?
Помогите кому не трудно разобраться с набором команд для сжатия.. Я использую следующий набор команд:
arc.exe a -ep1 -dses --dirs -s; -lc- -di -i2 -r "-hppassword" -mprecomp+srep:l512+lzma:a1:mfbt4:d176m:fb128:mc1000:lc8 data.bin packeddata\*
При установке игры, "Setup.tmp" потребляет целых 720 мб оперативной памяти.. можно как то снизить данный показатель при этом не потерять степень сжатия и скорость распаковки? Заранее спасибо
так не получится (хотя было бы очень практично ! ), тк нужно сравнивать числа а не строку »Да ладно? Прежде чем выложить, я проверил и не раз. У меня почему то работает.
У тебя же function FileVersion возвращает строку - вот я и сравниваю строковый параметр - версию файла.
Johny777
18-10-2013, 15:11
nik1967,
if '3.0.0.0' < '3.0.0.1' then Beep;
в натуре работает, буду знать, спасибо за знание! :)
даже не знал, что так можно, по старинке алгорим пишу... жесть, не задумывался о очевидном решении
те для меня сравнение строк раньше было =/<>, а можно оказывается и <, >
... ну все ж пусть будет и математическое сравнение до кучи, раз уж оно есть
Ребят Всем привет помогите решить проблему
http://i59.fastpic.ru/thumb/2013/1018/54/311a3a8292356fe47e1213f5eb084754.jpeg (http://fastpic.ru/view/59/2013/1018/311a3a8292356fe47e1213f5eb084754.png.html)
Ух... супер... все шикарно работает...
Немного адаптировал под себя... чтобы по 100 раз в код не лазить.
function FileVersion(const FilePath: String): String;
var
oFS: Variant;
begin
oFS:= CreateOleObject('Scripting.FileSystemObject');
try
Result:= oFS.GetFileVersion(FilePath);
except
end;
end;
function NextButtonClick(CurPageID: Integer): Boolean;
begin
Result:= true;
case CurPageID of
wpSelectDir:
begin
if FileExists(ExpandConstant('{app}')+'\Game.exe') then begin
if FileVersion(ExpandConstant('{app}')+'\Game.exe') < '{#AppVerName}.0' then begin
MsgBoxEx(WizardForm.Handle, 'Установщик предназначен для версии {#AppVerName}', 'Файлы не подходят для данной версии', MB_OK or MB_ICONWARNING, 0, 0);
Result:= false;
end;
if FileVersion(ExpandConstant('{app}')+'\Game.exe') > '{#AppVerName}' then begin
MsgBoxEx(WizardForm.Handle, 'Установщик предназначен для версии {#AppVerName}', 'Файлы не подходят для данной версии'', MB_OK or MB_ICONWARNING, 0, 0);
Result:= false;
end
end else begin
MsgBoxEx(WizardForm.Handle, 'Еще раз проверьте путь установки!', 'Неверно указан путь', MB_OK or MB_ICONWARNING, 0, 0);
Result:= false;
end;
end;
end;
end;
И я опять возвращаюсь к наиболее запутанному для себя вопросу... реально ли подгружать особо крупные компоненты с ФТП, если их выберут для установки?
Немного адаптировал под себя... »
Только ошибку в скрипте допустил:
[Code]
function FileVersion(const FilePath: String): String;
var
oFS: Variant;
begin
oFS:= CreateOleObject('Scripting.FileSystemObject');
try
Result:= oFS.GetFileVersion(FilePath);
except
end;
end;
function NextButtonClick(CurPageID: Integer): Boolean;
begin
Result:= true;
case CurPageID of
wpSelectDir:
begin
if FileExists(ExpandConstant('{app}')+'\MyProg.exe') then begin
if FileVersion(ExpandConstant('{app}')+'\MyProg.exe') < '{#AppVerName}.0' then begin
MsgBoxEx(WizardForm.Handle, 'Установщик предназначен для версии {#AppVerName}', 'Файлы не подходят для данной версии', MB_OK or MB_ICONWARNING, 0, 0);
Result:= false;
end;
if FileVersion(ExpandConstant('{app}')+'\MyProg.exe') > '{#AppVerName}' then begin
MsgBoxEx(WizardForm.Handle, 'Установщик предназначен для версии {#AppVerName}', 'Файлы не подходят для данной версии', MB_OK or MB_ICONWARNING, 0, 0);
Result:= false;
end
end else begin
MsgBoxEx(WizardForm.Handle, 'Еще раз проверьте путь установки!', 'Неверно указан путь', MB_OK or MB_ICONWARNING, 0, 0);
Result:= false;
end;
end;
end;
end;
habib2302
19-10-2013, 16:49
Доброе время суток. Я делаю репак atomic alarm clock. Проблема в том, что не срабатывает скрипт на удаление др. версий приложения при старте. Оригинальная програ установлена. Кстати. Кто то мне давал скрип (архив под название 1) он не работает
Кстати. Кто то мне давал скрип (архив под название 1) он не работает »
Я давал. Он работает. День другой, ошибки все те же)
[Setup]
AppName=My Application
AppVersion=1.5
DefaultDirName={pf}
OutputDir=.
[Languages]
;Путь к файлу сообщений русского языка
Name: Russian; MessagesFile: compiler:Languages\Russian.isl
;Путь к файлу сообщений английского языка
Name: English; MessagesFile: compiler:Default.isl
[CustomMessages]
;Сообщение для русского языка
Russian.MsgUnins=Перед установкой необходимо удалить предыдущую версию приложения. Продолжить?
;Сообщение для английского языка
English.MsgUnins=Before installation it is necessary to remove the previous version of the app. Continue?
[Code]
function InitializeSetup(): Boolean;
begin
MsgBox(CustomMessage('MsgUnins'), mbError, MB_OK);
end;
Проблема в том, что не срабатывает скрипт на удаление др. версий приложения при старте »
Возможно потому, что оригинальный установщик написан не на Inno (какой у этой программки оригинальный инстал я не знаю) и создает запись в реестре без иновского _is1.
Buff := RemoveQuotes(ExpandConstant('{reg:HKLM\SOFTWARE\Microsoft\Windows\CurrentVersion\Uninstall\' + AppIds[i] + '_is1,UninstallString|}'));
© OSzone.net 2001-2012
vBulletin v3.6.4, Copyright ©2000-2025, Jelsoft Enterprises Ltd.