2013-03-22 1 views
1

Я пытаюсь unistall все плагины, установленные в моем приложении, перед тем, как его unistalling. Я использую код, приведенный ниже, но у меня нет результатов ...Exec unistaller второго приложения

for I := 0 to GetArrayLength(PluginsID)-1 do 
begin 
    sUnInstallString := 'Software\Microsoft\Windows\CurrentVersion\Uninstall\' + PluginsID[I]; 
    Exec(sUnInstallString, '/NORESTART','', SW_SHOW, ewWaitUntilTerminated, uResultCode); 
end; 

Есть ли что-нибудь не так?

EDITED

изменить код, чтобы найти правильное unistall строки:

for I := 0 to GetArrayLength(Plugins)-1 do 
    begin 
    sUnInstPath := 'Software\Microsoft\Windows\CurrentVersion\Uninstall\' + Plugins[I]; 
    if RegQueryStringValue(HKLM, sUnInstPath, 'UninstallString', sUnInstallString) then 
    begin  
     Exec(sUnInstallString, '','', SW_HIDE, ewWaitUntilTerminated, uResultCode); 
    end; 
    end; 

Но он не работает снова .... sUnInstallString заполняется с правильным значением.

+0

Это потому, что вы пытаетесь выполнить ключ реестра. Вероятно, вы собираетесь запросить путь удаления из этого раздела реестра, не так ли? – TLama

+0

Я нашел в учебнике, что я должен сделать на этом пути. Если это не так, как я могу продолжить удаление? – Victor

+0

Итак, что возвращает вас, что 'UninstallString'? Есть ли путь к исполняемому файлу unistaller и параметрам? – TLama

ответ

0

Я просто добавить строку

StringChangeEx(sUnInstallString, '"', '', True); 

Exec перед тем. Значение АМСВО из реестра с недействительным полукокса "

+0

Это не неверно, это важно. Вы не должны использовать его таким образом. – Miral

0

Изменение Exec вызов этому:

Exec('>', sUnInstallString, ...) 

(. Не удалять кавычки, прежде чем делать это)

+0

Что означает использование '>'? – Victor

+0

Прочтите помощь для ['Exec'] (http://jrsoftware.org/ishelp/topic_isxfunc_exec.htm). – Miral