安装包安装的时候需要先卸载再重新安装,如果程序还在运行,就无法正常卸载,需要先关闭进程再卸载
Inno setup杀死进程的方法
[code]
function RunTask(FileName: string; bFullpath: Boolean): Boolean;
external 'RunTask@files:ISTask.dll stdcall delayload';
function KillTask(ExeFileName: string): Integer;
external 'KillTask@files:ISTask.dll stdcall delayload';
function InitializeSetup(): Boolean;
var
ResultStr: String;
ResultCode: Integer;
begin
#检测进程
begin
Result:= true;
if RunTask('kk.exe', false) then
begin
KillTask('kk.exe');
Result:= true;
end
else
Result:= true;
end;
#卸载程序
if RegQueryStringValue(HKLM, 'SOFTWARE\Microsoft\Windows\CurrentVersion\Uninstall\kk_is1', 'UninstallString', ResultStr) then
begin
ResultStr := RemoveQuotes(ResultStr);
Exec(ResultStr, '/silent', '', SW_HIDE, ewWaitUntilTerminated, ResultCode);
end;
end;
其中检测进程和杀死进程需要用到ISTask.dll,该dll要与应用程序放在同一级目录并一起打包
卸载程序是通过检测注册表来判断是否安装过
ISTask.dll下载地址:https://download.csdn.net/download/a137748099/12851377