Имя пользователя:
Пароль:
 

Показать сообщение отдельно

Аватара для Stealthmax

Новый участник


Сообщения: 46
Благодарности: 15

Профиль | Цитировать


Цитата Nordek:
У NSIS "/S" и в ветке реестра HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows\CurrentVersion\Uninstall есть такое как Sandboxie, но к Inno это отношения вообще не имеет.
У Inno "/SILENT" а в ветке реестра HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows\CurrentVersion\Uninstall к Sandboxie дописывается хвост "_is1". »
Ну то понятно, я делал репак программы, и нужна была проверка не предмет оригинальной установки и, допустим, наличие установки на базе Inno, так вот с Inno как раз проблем никаких, даже при обработке моего ключа для удаления в реестре вида:
Код: Выделить весь код
RegWriteStringValue(HKLM, 'Software\Microsoft\Windows\CurrentVersion\Uninstall\{#MyAppName}_is1','UninstallString', ExpandConstant('{app}\{#UninstallExeName} /VERYSILENT /NORESTART /SUPPRESSMSGBOXES'));
, а с оригинальным установщиком возникла трабла, вот и всего-то. Но ещё раз спасибо всем, кто не прошел мимо и активно оказал содействие.
Нашел код для определения локали в таком формате 1049 и добавил в свой код при деинсталляции:
Код: Выделить весь код
type
LCID = LongInt;

function GetSystemDefaultLCID() : LCID; external 'GetSystemDefaultLCID@kernel32.dll stdcall';

procedure CurUninstallStepChanged(CurUninstallStep: TUninstallStep);
var
  ResultCode: Integer;
begin 
  if CurUninstallStep=usUninstall then
  begin
    Exec(ExpandConstant('{app}\KmdUtil.exe'),ExpandConstant(' /lang=LCID stop SbieSvc'),'',SW_HIDE,ewWaitUntilTerminated,ResultCode);
    Exec(ExpandConstant('{app}\KmdUtil.exe'),ExpandConstant(' /lang=LCID delete SbieSvc'),'',SW_HIDE,ewWaitUntilTerminated,ResultCode);
    Exec(ExpandConstant('{app}\KmdUtil.exe'),ExpandConstant(' /lang=LCID stop SbieDrv'),'',SW_HIDE,ewWaitUntilTerminated,ResultCode);
    Exec(ExpandConstant('{app}\KmdUtil.exe'),ExpandConstant(' /lang=LCID delete SbieDrv'),'',SW_HIDE,ewWaitUntilTerminated,ResultCode);    
end;
end;
Суть сводится к тому, что не требуется перезагрузка при удалении драйвера, в штатном комплекте Sandboxie идет исполняемый модуль для установки/удаления службы и драйвера, пробовал использовать sc.exe для подобного, но требуется в итоге перезагрузка. Данный вариант зарекомендовал себя отлично, т.е. прогнал 3 раза переустановку смешанную туда-сюда, все работает. Вопрос такой: правильно ли я употребил WinAPI в данном контексте? У разработчика выглядит так: {tmp}\KmdUtil.exe /lang=1049 stop SbieDrv применимо для русской локали.

Последний раз редактировалось Stealthmax, 19-04-2014 в 08:58.


Отправлено: 04:39, 19-04-2014 | #466