PDA

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


Страниц : 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

BlackSelf
11-05-2009, 19:00
Krekerpro, у вас написано, что TOOLS.exe копируется в {app}. Потом вы даёте команду распаковки по другому пути {app}\SUPPORT\TOOLS\TOOLS.exe
В конце концов можете написать так:
[Run]
Filename: {app}\TOOLS.exe; WorkingDir: {app}; Parameters: -x archive.7z -y -o; StatusMsg: Идет распаковка архива...
Filename: "cmd.exe"; Parameters: "/C del /F /Q TOOLS.exe"; WorkingDir: "{app}";

Serega
11-05-2009, 19:55
Krekerpro, у вас написано, что TOOLS.exe копируется в {app}. Потом вы даёте команду распаковки по другому пути {app}\SUPPORT\TOOLS\TOOLS.exe »BlackSelf, вы совершенно правы, только параметр для SFX архива должен быть просто -y.
можно сделать как вы предлагаете или записать так:
[Files]
Source: D:\Games\123\SUPPORT\TOOLS\TOOLS.exe; DestDir: {app}; Flags: ignoreversion deleteafterinstall
[Run]
Filename: {app}\TOOLS.exe; WorkingDir: {app}; Parameters: -y; StatusMsg: Идет распаковка архива...

Krekerpro
11-05-2009, 21:42
Serega_,
BlackSelf,
Вот так удаляется но,не в ту папку куда надо распаковывается :(

Serega
11-05-2009, 23:28
не в ту папку куда надо распаковывается »Из вашего примера, не понятно куда надо распаковывать архив. Для того, чтоб задать каталог распаковки используйте ключ -o, т.е.:
[Run]
Filename: {app}\TOOLS.exe; WorkingDir: {app}; Parameters: -y -o'{app}\TOOLS'; StatusMsg: Идет распаковка архива...

BlackSelf
12-05-2009, 00:48
На фоне уже есть картинка. Нужно сверху неё наложить ещё одну маленькую картинку с прозрачностью. Пробовал через gifctrl.dll, но не получилось.
Подскажите, пожалуйста, как это сделать?

Serega
12-05-2009, 09:14
BlackSelf, покажите скрипт, как вы делаете и если есть скриншот, что хотите в итоге увидеть.

Dukalis
12-05-2009, 18:48
Подскажите пожалуйста как сделать так, чтобы унинсталлер сначала закрывал уже работающую программу и лишь затем начинал её удаление? Что и где в скрипте прописать?

Serega
12-05-2009, 19:33
Dukalis, пример - пост 549.

Dukalis
12-05-2009, 20:55
Serega_, Спасибо за помощь! Компилятор выдаёт ошибку (Column 5:Unknown identifier 'UninstallProgressForm') в этой строчке:
UninstallProgressForm.Visible := False;

Serega
12-05-2009, 21:25
Dukalis, у меня просто раширенная версия от Restools, т.е. у меня ошибок не выдаёт...
Закомментируйте эти две строки в скрипте:
// UninstallProgressForm.Visible := False;
// UninstallProgressForm.Visible := True;

daniil-bond
13-05-2009, 11:08
В инсталяторе запускаю скрипты, который заливают данные в базу. Так вот как можно обрабатывать ошибки если не запущен OracleXE??? Может как нибудь перед запуском скриптов делать проверку запущен ли Oracle???

p3rf3ct1c
13-05-2009, 23:45
Здравствуйте! Можете помоч с сохранениями игры? Как мне сделать чтобы после удаления игры сохранения удалялись через программу killsave (http://tracers.ru/upload/122227) которые находятся тут - C:\ProgramData\2DBoy\WorldOfGoo? Или если есть другие способы можете подсказать?

И еще вопрос, можете подсказать как склеивать коды, чтобы не вылезало никаких ошибок?

Serega
15-05-2009, 17:24
Как мне сделать чтобы после удаления игры сохранения удалялись »[Setup]
AppName=My Program
AppVerName=My Program v 1.5
DefaultDirName={pf}\My Program
OutputDir=.
Compression=lzma/ultra
SolidCompression=yes

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

[Files]
Source: compiler:Examples\MyProg.exe; DestDir: {app}

[Code]
procedure CurUninstallStepChanged(CurUninstallStep: TUninstallStep);
var
Res: Integer;
begin
case CurUninstallStep of
usPostUninstall:
begin
//Проверяем присутствие папки после удаления
If DirExists(ExpandConstant('{app}')) then
//Создаем диалог с тремя кнопками
case MsgBox('Папка "' + ExpandConstant('{app}') + '" не пуста.'#13#13 +
'"Да" – полное удаление всех файлов в папке, включая саму папку.' #13#13 +
'"Нет" – открыть папку в проводнике, чтобы вручную удалить файлы.'#13#13 +
'"Отмена" – ничего не делать, удалить папку позже самостоятельно.', mbInformation, MB_YESNOCANCEL) of
IDYES:
begin
if not DelTree(ExpandConstant('{app}'), True, True, True) then
MsgBox('Папка не удалена.' #13#13 'Папка или один из файлов в ней задействованы другим приложением.', mbError, MB_OK);
end;
IDNO:
begin
if not ShellExec('open', ExpandConstant('{app}'), '', '', SW_SHOWMAXIMIZED, ewNoWait, Res) then
MsgBox('Ошибка открытия.' #13#13 'Папка не найдена.', mbError, MB_OK);
end;
IDCANCEL:
begin
Exit;
end;
end;
end;
end;
end;

можете подсказать как склеивать коды, чтобы не вылезало никаких ошибок? »Если коротко, то - правильно склеивать...
Имена процедур или функций могут быть только в одном экземпляре внутри одного скрипта. После имени процедуры или функции может идти var, где вы задаёте переменные, которые будут использованы только в данной процедуре или функции. Затем всегда идёт begin - начало выполнения, а заканчивается - end;... Я даже не знаю, что можно сказать, всё приходит с пониманием того, что вы делаете...

p3rf3ct1c
15-05-2009, 18:45
Serega_,
Почему то при компиляции выдает ошибку

http://pic.ipicture.ru/uploads/090515/N8koOaRC7s.jpg

Serega
15-05-2009, 19:15
p3rf3ct1c, здесь говориться:
Неожиданное исключение класса в препроцессоре.
Нарушение доступа в адресе модуля ISCmplr.dls

Попробуйте переустановить Inno Setup, т.е. эта ошибка не связанна с приведённым мной скриптом.

p3rf3ct1c
15-05-2009, 20:22
Serega_,
Спасибо, переустановил, ошибки нет, но хотелось бы чтобы при удалении удалялись сохранения которые находятся не в папке с игрой а в другом месте, например в моих документах, или appdata или programdata, как прописать путь или чтобы программа сама их нашла и удалила?

Serega
15-05-2009, 20:50
например в моих документах, или appdata или programdata, как прописать путь »Посмотрите внимательно скрипт, там есть строки:

...........................
//Проверяем присутствие папки после удаления
If DirExists(ExpandConstant('{app}')) then
..........................
Допустим, нам надо проверить наличие папки в Моих документах, тогда пишем так:

...........................
//Проверяем присутствие папки после удаления
If DirExists(ExpandConstant('{userdocs}\My Program')) then
..........................

p3rf3ct1c
15-05-2009, 21:02
Serega_, //Проверяем присутствие папки после удаления
If DirExists(ExpandConstant('{userdocs}\My Program')) then »
А, понятно, извиняюсь что не заметил, я просто новичок в inno.

А как проверить наличие папки в appdata или programdata?

Serega
15-05-2009, 21:51
p3rf3ct1c, почитайте Справку, найдёте много интересного...
{userappdata} & {commonappdata}

Путь к папке с данными приложения (Application Data).
а programdata - это какая-то ваша папка? Если у неё путь, который вы указывали ранее C:\ProgramData\2DBoy\WorldOfGoo, то {sd}\ProgramData\2DBoy\WorldOfGoo, где {sd} - системный диск.

p3rf3ct1c
15-05-2009, 23:12
Serega_,
Спасибо вам! Все получилось.

C:\ProgramData\ у меня скрытая папка как и Application Data, в XP вроде нет папки ProgramData (хотя не знаю) , а у мебя сейчас стоит Win7. Эта папка вроде и в Висте есть.




© OSzone.net 2001-2012