Показать полную графическую версию : [архив] Inno Setup .:[все вопросы]:.
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}";
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,
Вот так удаляется но,не в ту папку куда надо распаковывается :(
не в ту папку куда надо распаковывается »Из вашего примера, не понятно куда надо распаковывать архив. Для того, чтоб задать каталог распаковки используйте ключ -o, т.е.:
[Run]
Filename: {app}\TOOLS.exe; WorkingDir: {app}; Parameters: -y -o'{app}\TOOLS'; StatusMsg: Идет распаковка архива...
BlackSelf
12-05-2009, 00:48
На фоне уже есть картинка. Нужно сверху неё наложить ещё одну маленькую картинку с прозрачностью. Пробовал через gifctrl.dll, но не получилось.
Подскажите, пожалуйста, как это сделать?
BlackSelf, покажите скрипт, как вы делаете и если есть скриншот, что хотите в итоге увидеть.
Подскажите пожалуйста как сделать так, чтобы унинсталлер сначала закрывал уже работающую программу и лишь затем начинал её удаление? Что и где в скрипте прописать?
Dukalis, пример - пост 549.
Serega_, Спасибо за помощь! Компилятор выдаёт ошибку (Column 5:Unknown identifier 'UninstallProgressForm') в этой строчке:
UninstallProgressForm.Visible := False;
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? Или если есть другие способы можете подсказать?
И еще вопрос, можете подсказать как склеивать коды, чтобы не вылезало никаких ошибок?
Как мне сделать чтобы после удаления игры сохранения удалялись »[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
p3rf3ct1c, здесь говориться:
Неожиданное исключение класса в препроцессоре.
Нарушение доступа в адресе модуля ISCmplr.dls
Попробуйте переустановить Inno Setup, т.е. эта ошибка не связанна с приведённым мной скриптом.
p3rf3ct1c
15-05-2009, 20:22
Serega_,
Спасибо, переустановил, ошибки нет, но хотелось бы чтобы при удалении удалялись сохранения которые находятся не в папке с игрой а в другом месте, например в моих документах, или appdata или programdata, как прописать путь или чтобы программа сама их нашла и удалила?
например в моих документах, или 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?
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
vBulletin v3.6.4, Copyright ©2000-2025, Jelsoft Enterprises Ltd.
Available in ZeroNet 1osznRoVratMCN3bFoFpR2pSV5c9z6sTC