PDA

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


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

AlekseyPopovv
14-08-2014, 12:52
Ребята помогите решить проблему: скрипт собирается, файл запускается всё устанавливается. Ошибка возникает при удалении после окошка "Нажмите кнопку "OK" и удалите не нужные Вам параметры программы {#MyAppName} {#MyAppVersion}.". Скрипт на две программы (Beauty.Checked и Brightness.Checked). Как решить эту проблему?

[Messages]
UninstalledAll=Нажмите кнопку "OK" и удалите не нужные Вам параметры программы {#MyAppName} {#MyAppVersion}.

procedure CurUninstallStepChanged(CurUninstallStep: TUninstallStep);
begin
if (CurUninstallStep = usDone) then
begin
if Beauty.Checked then
RegDeleteKeyIncludingSubkeys(HKCR, 'bmp_auto_file\shell\Beauty Guide');
if Beauty.Checked then
RegDeleteKeyIncludingSubkeys(HKCR, 'jpegfile\shell\Beauty Guide');
if Beauty.Checked then
RegDeleteKeyIncludingSubkeys(HKCR, 'pngfile\shell\Beauty Guide');
if Beauty.Checked then
RemoveDir(ExpandConstant('{group}'));
end;
begin
if (CurUninstallStep = usDone) then
begin
if Beauty.Checked then
if MsgBox('Удалить Ваши настройки Beauty Guide?',mbconfirmation, mb_yesno) = IDYES then
begin
if Beauty.Checked then
DelTree(ExpandConstant('{userappdata}\BeautyGuide'), True, True, True);
end;
begin
if (CurUninstallStep = usDone) then
begin
if Beauty.Checked then
if MsgBox('Удалить плагины Beauty Guide?',mbconfirmation, mb_yesno) = IDYES then
begin
if Beauty.Checked then
DeleteFile(ExpandConstant('{pf32}\Tint Guide\Photo Plugins\BeautyGuidePlugin.8bf'));
DeleteFile(ExpandConstant('{pf}\Tint Guide\Photo Plugins64\BeautyGuidePlugin64.8bf'));
RemoveDir(ExpandConstant('{pf32}\Tint Guide\Photo Plugins'));
RemoveDir(ExpandConstant('{pf32}\Tint Guide'));
RemoveDir(ExpandConstant('{pf}\Tint Guide\Photo Plugins64'));
RemoveDir(ExpandConstant('{pf}\Tint Guide'));
begin
if (CurUninstallStep = usDone) then
begin
if Beauty.Checked then
if MsgBox('Программа {#MyAppNameBeauty} {#MyAppBeautyVersion} удалена!',mbconfirmation, mb_ok) = IDYES then
end;
end;
end;
end;
end;
end;
end;
begin
if (CurUninstallStep = usDone) then
begin
if Brightness.Checked then
RegDeleteKeyIncludingSubkeys(HKCR, 'bmp_auto_file\shell\Brightness Guide');
if Brightness.Checked then
RegDeleteKeyIncludingSubkeys(HKCR, 'jpegfile\shell\Brightness Guide');
if Brightness.Checked then
RegDeleteKeyIncludingSubkeys(HKCR, 'pngfile\shell\Brightness Guide');
if Brightness.Checked then
RemoveDir(ExpandConstant('{group}'));
end;
begin
if (CurUninstallStep = usDone) then
begin
if Brightness.Checked then
if MsgBox('Удалить Ваши настройки Brightness Guide?',mbconfirmation, mb_yesno) = IDYES then
begin
if Brightness.Checked then
DelTree(ExpandConstant('{userappdata}\BrightnessGuide'), True, True, True);
end;
begin
if (CurUninstallStep = usDone) then
begin
if Brightness.Checked then
if MsgBox('Удалить плагины Brightness Guide?',mbconfirmation, mb_yesno) = IDYES then
begin
if Brightness.Checked then
DeleteFile(ExpandConstant('{pf32}\Tint Guide\Photo Plugins\BrightnessGuidePlugin.8bf'));
DeleteFile(ExpandConstant('{pf}\Tint Guide\Photo Plugins64\BrightnessGuidePlugin64.8bf'));
RemoveDir(ExpandConstant('{pf32}\Tint Guide\Photo Plugins'));
RemoveDir(ExpandConstant('{pf32}\Tint Guide'));
RemoveDir(ExpandConstant('{pf}\Tint Guide\Photo Plugins64'));
RemoveDir(ExpandConstant('{pf}\Tint Guide'));
begin
if (CurUninstallStep = usDone) then
begin
if Brightness.Checked then
if MsgBox('Программа {#MyAppNameBrightness} {#MyAppBrightnessVersion} удалена!',mbconfirmation, mb_ok) = IDYES then
end;
end;
end;
end;
end;
end;
end;
end;

El Sanchez
15-08-2014, 08:54
AlekseyPopovv,

procedure CurUninstallStepChanged(CurUninstallStep: TUninstallStep);
begin
if (CurUninstallStep = usDone) then
begin
if Beauty.Checked then
RegDeleteKeyIncludingSubkeys(HKCR, 'bmp_auto_file\shell\Beauty Guide');
RegDeleteKeyIncludingSubkeys(HKCR, 'jpegfile\shell\Beauty Guide');
RegDeleteKeyIncludingSubkeys(HKCR, 'pngfile\shell\Beauty Guide');
RemoveDir(ExpandConstant('{group}'));

if MsgBox('Удалить Ваши настройки Beauty Guide?',mbconfirmation, mb_yesno) = IDYES then
DelTree(ExpandConstant('{userappdata}\BeautyGuide'), True, True, True);

if MsgBox('Удалить плагины Beauty Guide?',mbconfirmation, mb_yesno) = IDYES then
begin
DeleteFile(ExpandConstant('{pf32}\Tint Guide\Photo Plugins\BeautyGuidePlugin.8bf'));
DeleteFile(ExpandConstant('{pf}\Tint Guide\Photo Plugins64\BeautyGuidePlugin64.8bf'));
RemoveDir(ExpandConstant('{pf32}\Tint Guide\Photo Plugins'));
RemoveDir(ExpandConstant('{pf32}\Tint Guide'));
RemoveDir(ExpandConstant('{pf}\Tint Guide\Photo Plugins64'));
RemoveDir(ExpandConstant('{pf}\Tint Guide'));
end;
MsgBox('Программа {#MyAppNameBeauty} {#MyAppBeautyVersion} удалена!',mbconfirmation, mb_ok);
end;

if Brightness.Checked then
begin
RegDeleteKeyIncludingSubkeys(HKCR, 'bmp_auto_file\shell\Brightness Guide');
RegDeleteKeyIncludingSubkeys(HKCR, 'jpegfile\shell\Brightness Guide');
RegDeleteKeyIncludingSubkeys(HKCR, 'pngfile\shell\Brightness Guide');
RemoveDir(ExpandConstant('{group}'));

if MsgBox('Удалить Ваши настройки Brightness Guide?',mbconfirmation, mb_yesno) = IDYES then
DelTree(ExpandConstant('{userappdata}\BrightnessGuide'), True, True, True);

if MsgBox('Удалить плагины Brightness Guide?',mbconfirmation, mb_yesno) = IDYES then
begin
DeleteFile(ExpandConstant('{pf32}\Tint Guide\Photo Plugins\BrightnessGuidePlugin.8bf'));
DeleteFile(ExpandConstant('{pf}\Tint Guide\Photo Plugins64\BrightnessGuidePlugin64.8bf'));
RemoveDir(ExpandConstant('{pf32}\Tint Guide\Photo Plugins'));
RemoveDir(ExpandConstant('{pf32}\Tint Guide'));
RemoveDir(ExpandConstant('{pf}\Tint Guide\Photo Plugins64'));
RemoveDir(ExpandConstant('{pf}\Tint Guide'));
end;
MsgBox('Программа {#MyAppNameBrightness} {#MyAppBrightnessVersion} удалена!',mbconfirmation, mb_ok);
end;
end;
end;

Raf-9600
15-08-2014, 22:34
Можно ли сделать так, чтобы Description одного из компонентов брался из определённой переменной?

Dodakaedr
17-08-2014, 16:54
Подскажите, как через секцию [Code] провести регистрацию OLE-сервера (он же ActiveX control), по иному как сделать через секцию [Code] тоже самое что и флаг regserver в секции [Files]?

R.i.m.s.k.y.
17-08-2014, 17:12
Dodakaedr,
Exec(ExpandConstant('{sys}\regsvr32.exe'), ' /s ' + 'полный_путь_до_файла', ExpandConstant('{sys}'), SW_HIDE, ewWaitUntilTerminated, ResultCode)

Raf-9600,
# define SVPDefDir "SVP 3.1.6"
[Components]
Name: SVP; Description: {#SVP};

Dodakaedr
17-08-2014, 17:23
R.i.m.s.k.y., А как на счет встроенной процедуры RegisterServer? Не подскажите как правильно её использовать для регистрации для 32bit и 64bit? И как с помощью regsvr32.exe дерегистрировать?

R.i.m.s.k.y.
17-08-2014, 17:31
Dodakaedr,
(un)registerServer (False для х86 true для х64, 'полный_путь_до_файла',True)

Exec(ExpandConstant('{sys}\regsvr32.exe'), ' /u /s ' + 'полный_путь_до_файла', ExpandConstant('{sys}'), SW_HIDE, ewWaitUntilTerminated, ResultCode)

кнопка F1 западает? :gigi:

Dodakaedr
17-08-2014, 17:53
кнопка F1 западает? »
Нет, отсутствует :gigi: Спасибо!

Raf-9600
17-08-2014, 18:18
# define SVPDefDir "SVP 3.1.6" »
Но define это ведь что-то вроде константы, т.е. далее в коде его менять нельзя, или я ошибаюсь? Мне нужно чтобы название компонента бралось из ini-файла, код для чтения из ini имею, а вот как дальше сделать...

nik1967
17-08-2014, 20:04
Raf-9600,
[Setup]
AppName=test
AppVerName=test
DefaultDirName={pf}\test

[Components]
Name: SVP; Description: {code:ReadIni};

[Code]
function ReadIni(IniFile: String): String;
begin
IniFile:= ExpandConstant('{src}\test.ini'); // расположение ini файла
Result:= GetIniString('test'{Название секции}, 'test1'{Подключ}, '', IniFile);
end;

Kashtan007
17-08-2014, 23:09
Всем привет.
Нужна ваша помощь!

Первый вопрос:
На странице каталога нужно 2 чекбокса.
1 чекбокс - будет удалять содержимое в res_mods\0.9.2\* и удалять папку xvm по пути res_mods\xvm.
2 чекбокс - должен делать бекап папки res_mods, по пути IB\old_res_mods, а после удаление репака возвращал бекап в папку res_mods.
Как это реализовать?

Второй вопрос:
Как сделать, чтобы файлы unins000.exe помещало по пути IB\Uninstall\* ?

Третий вопрос:
У меня в репаке есть файл "bin" и в папке куда я ставлю репак он тоже есть. В следствии чего если я ставлю репак, то файл заменяется, а когда удаляешь репак то файл тоже удаляется и не запускается игра. Как сделать, чтобы когда устанавливаешь репак, то файл "bin" из папки куда ставишь репак копировался по пути IB\BackUp, а после удаление возвращался на свое место.

P.S. Пользуюсь юникодом. Всем заранее спасибо за помощь!

amohax
19-08-2014, 08:35
Всем привет!

Вопрос 1: Как дать пользователю возможность выбирать произвольную папку для установки(т.е. не дописывать к пути папку по умолчанию)?

Пример: Папка по умолчанию "{pf}/myapplication"
Нужно что бы пользователь мог поставить приложение в папку "c:\app"

Gnom_aka_Lexander
19-08-2014, 09:06
amohax, можно. В секцию Setup добавить строчку AppendDefaultDirName=False. Только это очень опасно - при безответственном подходе пользователя можно похерить системные файлы. А безответственный подход последнее время замечен не только за пользователями, но и за производителями, то-есть теми, кому безответственное отношение просто запрещено. эт я к чему - при таком подходе к выбору пути, нужно обязательно проверять, что конечная папка приложения не является никакой из множества системных папок.

andy.zubov@vk
19-08-2014, 09:36
Разобрался с описанием и картинками к компонентам. Но понял что такого размера изображения мне просто не хватает для детального пояснения пользователю, нужен полноценный скриншот размером хотя бы в разрешении 1024*768.
Появилась идея сделать опции с описанием в виде текста в котором размещена гиперссылка на изображение лежащее на внешнем сервере в интернете (это уже есть). Но как полноценно отобразить html в описании компонента? попробовал richview, но он ссылки некорректно отображает, есть какие-то доп. модули под это дело или что можете посоветовать?

Gnom_aka_Lexander
19-08-2014, 09:48
andy.zubov@vk, IsWebCtrl (http://restools.hanzify.org/article.asp?id=90) поможет.

Антон_Мураткин@vk
19-08-2014, 18:54
Ребят подскажите пожалуйста как добавить WizardForm.TasksList 2-ую штуку? Что то не пойму как это сделать! Желательно на примере Заранее благодарю

Irenis
20-08-2014, 17:19
Добрый день! При создании установщика, я все необходимые файлы запаковываю программой 7zip, но запаковываю все одним архивом (то есть в итоге получается один архив .bin), иногда этот архив получается слишком большой. Уважаемые форумчане, подскажите пожалуйста, как тем же 7zip запаковать файлы так, чтобы в итоге получилось несколько архивов bin? И что нужно прописать в скрипте, чтобы потом при установке все правильно распаковалось и установилось? Спасибо.

R.i.m.s.k.y.
20-08-2014, 17:21
Irenis, даю наводку: многотомный архив

vint56
20-08-2014, 17:26
Irenis, либо самому разделить файлы на архивы

Irenis
20-08-2014, 18:09
Спасибо, с созданием многотомного архива разобралась :) А в скрипте что добавить? Вот например, при распаковке одного архива:

if not IS7ZipExtract ( 0, 100, ExpandConstant('{src}\client.bin'), ExpandConstant('{app}\'), false, '') then break;

То теперь, если нужно распаковывать два (три) архива, просто добавить такую же строчку? Например, получилось так:

client.bin.001
client.bin.002
client.bin.003

В скрипте так должно быть?

if not IS7ZipExtract ( 0, 100, ExpandConstant('{src}\client.bin.001'), ExpandConstant('{app}\'), false, '') then break;
if not IS7ZipExtract ( 0, 100, ExpandConstant('{src}\client.bin.002'), ExpandConstant('{app}\'), false, '') then break;
if not IS7ZipExtract ( 0, 100, ExpandConstant('{src}\client.bin.003'), ExpandConstant('{app}\'), false, '') then break;




© OSzone.net 2001-2012