论坛风格切换切换到宽版
  • 201阅读
  • 0回复

安装与卸载检测文件,{app}下有多个程序怎么办?? [复制链接]

上一主题 下一主题
离线bby4061751
 

发帖
72
金钱
730
威望
73
只看楼主 倒序阅读 0 发表于: 01-19
假如{app}下有fc模拟器.exe和gba模拟器.exe该怎么办?
当fc模拟器.exe在运行时,运行安装程序要怎么检测程序fc模拟器.exe在运行呢?
反之也一样呢?

代码如下:
[Code]
function RunTask1(FileName: string; bFullpath: Boolean): Boolean;
external 'RunTask@files:ISTask.dll stdcall delayload';
function KillTask1(ExeFileName: string): Integer;
external 'KillTask@files:ISTask.dll stdcall delayload';
function RunTask(FileName: string; bFullpath: Boolean): Boolean;
external 'RunTask@{app}\ISTask.dll stdcall uninstallonly';
function KillTask(ExeFileName: string): Integer;
external 'KillTask@{app}\ISTask.dll stdcall uninstallonly';

procedure InitializeWizard();
var
ResultStr: String;
ResultCode: Integer;

begin
if RegQueryStringValue(HKLM, 'SOFTWARE\Microsoft\Windows\CurrentVersion\Uninstall\{我的程序}_is1','UninstallString', ResultStr) then
//_is1 注册信息
begin
ResultStr := RemoveQuotes(ResultStr);
Exec(ResultStr, '', '', SW_SHOWNORMAL, ewWaitUntilTerminated, ResultCode);
end;
end;
function InitializeSetup(): Boolean;
begin
Result:= true;
if RunTask1('OneKey.exe', false) then
if MsgBox('安装程序检测到 fc模拟器.exe 正在运行!'#13''#13'单击“是”按钮关闭程序并继续安装!'#13''#13'单击“否”按钮则退出安装程序!',mbConfirmation, MB_OKCANCEL) = IDOK then
KillTask1('OneKey.tmp')
else begin
Result :=false;
end;
end;

function InitializeUninstall(): Boolean;
begin
Result:= true;
if RunTask('OneKey.exe', false) then
if MsgBox('卸载程序检测到 fc模拟器.exe 正在运行!'#13''#13'单击“是”按钮关闭程序并进行卸载!'#13''#13'单击“否”按钮则退出安装程序!',mbConfirmation, MB_OKCANCEL) = IDOK then
KillTask('OneKey.tmp')
else begin
Result :=false;
end;
UnloadDll(ExpandConstant('{app}\ISTask.dll'))
end;
[Languages]
Name: "default"; MessagesFile: "compiler:Default.isl"
[Tasks]
Name: "desktopicon"; Description: "{cm:CreateDesktopIcon}"; GroupDescription: "{cm:AdditionalIcons}"; Flags: unchecked
[Files]
Source: "E:\本地下载\inno编译目录\{app}\ISTask.dll"; DestDir: "{app}"; Flags: solidbreak