Функция DLL не вызывается из установщика NSIS при удалении - PullRequest
0 голосов
/ 21 марта 2019

При удалении программного обеспечения выполнить полную очистку, вызывая функцию в C ++ DLL.Чтобы добиться этого, я помещаю файл DLL в временную директорию.Затем в разделе Uninstall вызывается функция DLL.Но это не вызов функции.

Если я помещаю этот файл DLL в установленный каталог, то он вызывает функцию DLL.Но я не должен помещать его в установленный каталог, потому что я вызываю эту функцию при удалении.

Это правильный путь, который я делаю?или есть другой способ?

Ниже приведен мой фрагмент кода:

Section "MyApp"

InitPluginsDir
SetOutPath $PluginsDir
File "C:\Desktop\KillNofificationSoftly.dll"
SetOutPath $Temp 
MessageBox MB_OK "Temp Path $Temp"
System::Call 'KERNEL32::AddDllDirectory(w "$PluginsDir")'

SetOutPath $INSTDIR  

SectionEnd

Section "Uninstall"

System::Call "$PluginsDir\KillNofificationSoftly.dll::KillMeSoftly() i.r0 ?e"
Pop $1 ; LastError
${If} $0 = 0
    MessageBox MB_OK "Success"
${EndIf}

SectionEnd

1 Ответ

0 голосов
/ 21 марта 2019

Вы извлекаете .DLL в установщик!$PluginsDir удаляется после завершения установки.Переместите весь код в раздел удаления.

Если вы являетесь автором этого .DLL, вам следует подумать о написании плагина NSIS, тогда он станет просто одной строкой кода, не нужно System::Call.

...