我正在使用GameuxInstallHelper.dll在安装游戏资源管理器时注册我的游戏。
但是由于某些原因,dll在卸载后仍保留在我的应用程序文件夹中,但仅限于Win XP。在Win 7和Vista上,所有文件都将被删除。
使用的代码:
function CheckXPOs(): Boolean;
begin
if GetWindowsVersion shr 24 < 6 then Result:=TRUE
end;
procedure CurUninstallStepChanged(CurUninstallStep: TUninstallStep);
var
mres : integer;
begin
if CurUninstallStep = usUninstall then
begin
#ifdef AddToGameExplorer
if not CheckXPOs then
begin
RetrieveGUIDForApplication(ExpandConstant('{app}'+GE_resource), GUID);
RemoveFromGameExplorer(GUID);
RemoveTasks(GUID);
UnloadDll(ExpandConstant('{app}\GameuxInstallHelper.dll'));
end;
#endif
end;
case CurUninstallStep of
usPostUninstall:
begin
mres := MsgBox(ExpandConstant('{cm:removemsg}'), mbConfirmation, MB_YESNO)
if mres = IDYES then
DelTree(ExpandConstant('{app}'), True, True, True);
end;
end;
end;
知道为什么在XP操作系统上没有删除dll,我怎么能删除它? 我在卸载dll之后尝试了DeleteFile函数,我还试图创建另一个函数来搜索特定的dll,但没有任何帮助我解决问题。 并且dll没有被使用,因为手动操作系统让我删除它。
答案 0 :(得分:1)
你应该在“not CheckXPOs”阻止之后卸载dll。
if not CheckXPOs then
begin
RetrieveGUIDForApplication(ExpandConstant('{app}'+GE_resource), GUID);
RemoveFromGameExplorer(GUID);
RemoveTasks(GUID);
end;
UnloadDll(ExpandConstant('{app}\GameuxInstallHelper.dll'));
另一种方法是在声明从GameuxInstallHelper.dll加载的所有函数中添加"delayload"
选项