Войти

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


Страниц : 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 126 127 [128] 129 130 131 132 133

Imitri7
26-10-2010, 21:02
Habetdin, если делать скриптом что дал ты вот что выходит http://s001.youpic.su/pictures/1288026000/aea7537138487e6f9101457b489ea00b.png
а если просто объединить то http://s001.youpic.su/pictures/1288026000/de883d92b738749b3565131a7d562ea0.png

как убрать кнопку отмены на странице завершения?

kenny_danger
26-10-2010, 22:15
[InstallDelete]
Type: files; Name: "{app}\File.txt"
Type: filesandordirs; Name: "{app}\Path";
а вот как сделать чтоб удалось все в папке {app}\Path кроме определенного файла

Serega
27-10-2010, 07:17
как сделать чтоб удалось все в папке {app}\Path кроме определенного файла »
Без доп. манипуляций, никак... Пути решения:
1. Прописать удаление файлов и папок через код, т.е. пишите функцию удаления в которой перебираете все вложенные папки и файлы и если имя не совпадает с вашим нужным файлом, то удаляете;
2. Используем BeforeInstall и AfterInstall

[Setup]
AppName=My Program
AppVerName=My Program v 1.5
DefaultDirName={pf}\My Program
OutputDir=.
Compression=lzma/ultra64
InternalCompressLevel=ultra64
SolidCompression=yes

[Languages]
Name: russian; MessagesFile: compiler:Languages\Russian.isl

[InstallDelete]
Type: filesandordirs; Name: {app}\Path; BeforeInstall: MyBeforeInstall; AfterInstall: MyAfterInstall

[Code]
procedure MyBeforeInstall;
begin
// здесь копируем нужный файл, допустим в ExpandConstant('{tmp}')
end;

procedure MyAfterInstall;
begin
// здесь копируем его обратно
end;

j8r60
27-10-2010, 09:26
Кто-нибудь подскажите пожалуйста как правильно в этом коде прописать реестр

function InitializeSetup: Boolean;
var
path: string;
res: Integer;
begin
Result:= True;
if RegValueExists(HKLM, 'Software\Что нужно указать', 'InstallPath') then
if RegQueryStringValue(HKLM, 'Software\Что нужно указать', 'InstallPath', path) then
if FileExists(path + '\xrEngine.exe') then
if MsgBox('Запустить S.T.A.L.K.E.R. - Чистое Небо?', mbConfirmation, MB_YESNO) = IDYES then
begin
Exec(path + '\xrEngine.exe', '', '', SW_SHOW, ewWaitUntilTerminated, res);
Result:= False;
end
else Result:= False;
end;

Serega
27-10-2010, 10:25
как правильно в этом коде прописать реестр »
Не совсем понял, что именно вы хотите, вот описание из Справки на русском:

Support function: RegQueryStringValue

Образец:

function RegQueryStringValue(const RootKey: Integer; const SubKeyName, ValueName: String; var ResultStr: String): Boolean;

Описание:

Запрашивает указанные REG_SZ или REG_EXPAND_SZ ключи/параметры реестра и возвращает значение в ResultStr. Возвращает True при успешном завершении. При возвращенном False ResultStr не изменяется.

j8r60
27-10-2010, 10:58
Вот реестр от S.T.A.L.K.E.R. Чистое Небо

[Registry]
Root: HKLM; Subkey: "Software\GSC Game World"; Flags: uninsdeletekeyifempty
Root: HKLM; Subkey: "Software\GSC Game World\STALKER-STCS"; Flags: uninsdeletekey
Root: HKLM; Subkey: "Software\GSC Game World\STALKER-STCS"; ValueName: "InstallPath"; ValueType: String; ValueData: "{app}";
Root: HKLM; Subkey: "Software\GSC Game World\STALKER-STCS"; ValueName: "InstallLang"; ValueType: String; ValueData: "ru";
Root: HKLM; Subkey: "Software\GSC Game World\STALKER-STCS"; ValueName: "InstallSource"; ValueType: String; ValueData: "stkcs-rus-pack-r";
Root: HKLM; Subkey: "Software\GSC Game World\STALKER-STCS"; ValueName: "InstallVers"; ValueType: String; ValueData: "1.0010";
Root: HKLM; Subkey: "Software\GSC Game World\STALKER-STCS"; ValueName: "InstallCDKEY"; ValueType: String;
Root: HKLM; Subkey: "Software\GSC Game World\STALKER-STCS"; ValueName: "InstallUserName"; ValueType: String;
Root: HKLM; Subkey: "Software\GSC Game World\STALKER-STCS"; ValueName: "UnInstConfirm"; ValueType: String; ValueData:
Root: HKLM; Subkey: "Software\GSC Game World\STALKER-STCS"; ValueName: "InstallPatchID"; ValueType: Dword; ValueData: "$1";
Root: HKLM; Subkey: "Software\GSC Game World\STALKER-STCS\Keys"; Flags: uninsdeletekey

теперь какие значение припесать в этом коде
function InitializeSetup: Boolean;
var
path: string;
res: Integer;
begin
Result:= True;
if RegValueExists(HKLM, 'Software\Что нужно указать', 'InstallPath') then
if RegQueryStringValue(HKLM, 'Software\Что нужно указать', 'InstallPath', path) then
if FileExists(path + '\xrEngine.exe') then
if MsgBox('Запустить S.T.A.L.K.E.R. - Чистое Небо?', mbConfirmation, MB_YESNO) = IDYES then
begin
Exec(path + '\xrEngine.exe', '', '', SW_SHOW, ewWaitUntilTerminated, res);
Result:= False;
end
else Result:= False;
end;

Serega
27-10-2010, 12:25
какие значение припесать в этом коде »

////////////////////////////
if RegQueryStringValue(HKLM, 'Software\GSC Game World\STALKER-STCS', 'InstallPath', path) then
////////////////////////////

STRAYKER
27-10-2010, 13:07
Serega,
Вот етот скрипт и инсталятор сложений по етому скрипту
Скрипт и инсталятор (http://forum.oszone.net/attachment.php?attachmentid=53508&stc=1&d=1288170363)

j8r60
27-10-2010, 13:52
Serega

Спасибо все разобрался проста сам ошибся мне надо была всего-лишь дописать правильно путь к exe файлу у меня был путь \xrEngine.exe а надо было \bin\xrEngine.exe

j8r60
27-10-2010, 14:45
Serega

Рано по радовался когда запускаешь S.T.A.L.K.E.R. Чистое Небо он выдает ошибку я знаю почему эта ошибка произошла этот файл xrEngine.exe его надо запускать с WorkingDir: как и в секций [Icons] вообще S.T.A.L.K.E.R. Чистое Небо - S.T.A.L.K.E.R. Зов Припяти они запускаются только с WorkingDir: теперь как и куда припесать чтобы этот файл xrEngine.exe запустился с WorkingDir:

R.i.m.s.k.y.
27-10-2010, 16:49
j8r60,
Держи ,,,,,,,,,,
Расставь сам в сообщении
Как бонус - скрипт (кусок) и сообщение ошибки.

j8r60
27-10-2010, 17:15
R.i.m.s.k.y.

Не совсем понял твое сообщение если нужен скриншот то вот http://rghost.ru/3061338.view

R.i.m.s.k.y.
27-10-2010, 17:29
Не совсем понял твое сообщение если нужен скриншот то вот http://rghost.ru/3061338.view »
Первое - расставь запятые, трудно без них читать, сплошной поток сознания.
Второе - скрипт в студию, телепатов на форуме нет.
И третье - желательно описание на каком шаге происходит ошибка.

j8r60
27-10-2010, 17:42
И третье - желательно описание на каком шаге происходит ошибка. »
на этом самом скрипте, мне надо чтобы он запускался с WorkingDir:

Вот скрипт function InitializeSetup: Boolean;
var
path: string;
res: Integer;
begin
Result:= True;
if RegValueExists(HKLM, 'Software\GSC Game World\STALKER-STCS', 'InstallPath') then
if RegQueryStringValue(HKLM, 'Software\GSC Game World\STALKER-STCS', 'InstallPath', path) then
if FileExists(path + '\bin\xrEngine.exe') then
if MsgBox('Запустить S.T.A.L.K.E.R. - Чистое Небо?', mbConfirmation, MB_YESNO) = IDYES then
begin
Exec(path + '\bin\xrEngine.exe', '', '', SW_SHOW, ewWaitUntilTerminated, res);
Result:= False;
end
else Result:= False;
end;

R.i.m.s.k.y.
28-10-2010, 08:29
мне надо чтобы он запускался с WorkingDir »
предположу что надо прописать в параметрах рабочу папку path + '\bin'
Exec(path + '\bin\xrEngine.exe', '', path + '\bin', SW_SHOW, ewWaitUntilTerminated, res);

STRAYKER
28-10-2010, 15:13
люди где скачать inno setup preprocessor ??????????

kotkovets
28-10-2010, 15:19
люди где скачать inno setup preprocessor ?????????? »
http://forum.oszone.net/showthread.php?p=1201499#post1201499 :)

j8r60
28-10-2010, 19:53
Exec(path + '\bin\xrEngine.exe', '', path + '\bin', SW_SHOW, ewWaitUntilTerminated, res); »

Без изменений таже ошибка вылетает, игра запускается с табличкой ошибки как показано на скриншоте

Serega
28-10-2010, 21:35
Как реализовать так чтобы при установке, распаковывались ZIP архивы, с тем учётом что сами архивы не паковались вместе с инсталятором, а лежали рядом »
Почитайте в Справке про константу {src}, пример распаковки внешних архивов есть в шапке темы в Inno Setup Scripting...
Вы не поверите, сколько всего интересного можно найти прочитав Справку и хотя бы бегло просмотрев примеры скриптов...
Простой пример:

procedure CurStepChanged(CurStep: TSetupStep);
var
ResultCode: Integer;
app, arc, dir: string;
begin
if CurStep = ssPostInstall then
begin
app := ExpandConstant('{src}\7za.exe'); // консольная утилита 7z
arc := ExpandConstant('{src}\ARC.7z'); // сам архив
dir := ExpandConstant('{app}'); // путь распаковки
Exec(app, 'x "' + arc + '" -y -o"' + dir + '"', '', SW_SHOWNORMAL, ewWaitUntilTerminated, ResultCode); //ключи командной строки 7z
end;
end;


таже ошибка вылетает »
Вы внимательно прочитайте, что именно написано в сообщении об ошибке?
Ошибка то, не инсталлятора, а самой программы, которую вы запускаете.
Программа не может найти файл fsgame.ltx о котором и говориться в сообщении, что он должен находиться в одном каталоге с программой, а его видимо там нет, отсюда и ошибка.

j8r60
29-10-2010, 03:00
Serega

Вы меня точно не поняли что я имел ввиду, я знаю что ошибка происходит не в инсталляторе, этот файл fsgame.ltx он у меня имеется в папке с игрой, дело не в ней хоть ошибка указывает на то что fsgame.ltx нет, если запустить игру с рабочего стола то игра запускается бз ошибки, игру надо запускать с WorkingDir: как в секций [Icons]
Name: "{group}\S.T.A.L.K.E.R. - Чистое Небо"; Filename: "{app}\bin\xrEngine.exe"; WorkingDir: "{app}\bin";
Name: "{commondesktop}\S.T.A.L.K.E.R. - Чистое Небо"; Filename: "{app}\bin\xrEngine.exe"; WorkingDir: "{app}";
Name: "{userappdata}\Microsoft\Internet Explorer\Quick Launch\S.T.A.L.K.E.R. - Чистое Небо"; Filename: "{app}\bin\xrEngine.exe"; WorkingDir: "{app}";




© OSzone.net 2001-2012