Цитата 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 применимо для русской локали.