很多時候我們需要在安裝文件之前卸載原有的程序而不是覆盖安装,本文的code就是实现了这样的功能。
实现原理是:從注冊表'UninstallString'項中读取卸载信息,用Exec进行静默卸载。
下面code中APP_NAME为你的程序名,可以去注冊表中确认。
- function InitializeSetup(): boolean;
- var
- ResultStr: String;
- ResultCode: Integer;
- begin
- if RegQueryStringValue(HKLM, 'SOFTWARE\Microsoft\Windows\CurrentVersion\Uninstall\APP_NAME_is1', 'UninstallString', ResultStr) then
- begin
- ResultStr := RemoveQuotes(ResultStr);
- Exec(ResultStr, '/silent', '', SW_HIDE, ewWaitUntilTerminated, ResultCode);
- end;
- result := true;
- end;