PDA

Показать полную графическую версию : Скрипты Inno Setup. Помощь и советы [часть 6]


Страниц : 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 [65] 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 106 107 108 109 110 111 112 113 114 115 116 117 118 119 120 121 122 123 124 125

APTEM2
17-10-2013, 13:40
Mat_y, nik1967,
http://i58.fastpic.ru/thumb/2013/1017/52/86aa4578978bbe22dac727109fe43f52.jpeg (http://fastpic.ru/view/58/2013/1017/86aa4578978bbe22dac727109fe43f52.png.html)

Shkutu
17-10-2013, 14:03
APTEM2, Вам же сказали, уберите|переименуйте 2й CancelBtn. На вашем же скриншоте видно в var ... NoIconsCheck, CancelBtn, MinBtn, CancelBtn
А на счет аналога GroupDescription для секции Components никто не знает?

APTEM2
17-10-2013, 14:14
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

Mat_y
17-10-2013, 14:22
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;


просто сравнивай строки...

Mat_y
18-10-2013, 08:55
и чем тебя не устраивает метод 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)

Это происходит при удаления игры.

nik1967
18-10-2013, 10:25
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: делал упор на быстродействие :)

Shkutu
18-10-2013, 14:32
Всем привет! Кто-нибудь знает, можно ли из инно запускать параметризованный sql скрипт (transact-sql) и как?

Alloc
18-10-2013, 14:52
Помогите кому не трудно разобраться с набором команд для сжатия.. Я использую следующий набор команд:


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 мб оперативной памяти.. можно как то снизить данный показатель при этом не потерять степень сжатия и скорость распаковки? Заранее спасибо

nik1967
18-10-2013, 14:53
так не получится (хотя было бы очень практично ! ), тк нужно сравнивать числа а не строку »Да ладно? Прежде чем выложить, я проверил и не раз. У меня почему то работает.
У тебя же function FileVersion возвращает строку - вот я и сравниваю строковый параметр - версию файла.

Johny777
18-10-2013, 15:11
nik1967,
if '3.0.0.0' < '3.0.0.1' then Beep;
в натуре работает, буду знать, спасибо за знание! :)

даже не знал, что так можно, по старинке алгорим пишу... жесть, не задумывался о очевидном решении
те для меня сравнение строк раньше было =/<>, а можно оказывается и <, >

... ну все ж пусть будет и математическое сравнение до кучи, раз уж оно есть

APTEM2
18-10-2013, 22:21
Ребят Всем привет помогите решить проблему
http://i59.fastpic.ru/thumb/2013/1018/54/311a3a8292356fe47e1213f5eb084754.jpeg (http://fastpic.ru/view/59/2013/1018/311a3a8292356fe47e1213f5eb084754.png.html)

Mat_y
19-10-2013, 00:50
Ух... супер... все шикарно работает...
Немного адаптировал под себя... чтобы по 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;

И я опять возвращаюсь к наиболее запутанному для себя вопросу... реально ли подгружать особо крупные компоненты с ФТП, если их выберут для установки?

Nordek
19-10-2013, 05:27
Немного адаптировал под себя... »
Только ошибку в скрипте допустил:

[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) он не работает

saurn
19-10-2013, 18:45
Кстати. Кто то мне давал скрип (архив под название 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