我正在使用此链接中提供的VCL样式来为我的安装程序/卸载程序设置外观:https://code.google.com/p/vcl-styles-plugins/wiki/VCLStylesInnoSetup
但是当我卸载程序时,不会删除包含这些功能的dll。
我如何删除它?。
我已经考虑过这个替代方案:将dll复制到一个临时文件夹并加载Windows Cleaner将来应删除的临时dll,但这导致我在这篇文章中谈到的另一个问题:{{3 }} 但这是另一个问题,我想知道的是如何删除这个dll文件。
这是我正在使用的完整[Code]
部分,请注意我尝试删除文件的DeinitializeUninstall
方法:
// Import the LoadVCLStyle function from VclStylesInno.DLL
procedure LoadVCLStyle(VClStyleFile: String); external 'LoadVCLStyleA@files:unins000.dll stdcall setuponly';
procedure LoadVCLStyle_UnInstall(VClStyleFile: String); external 'LoadVCLStyleA@{app}\unins000.dll stdcall uninstallonly';
// Import the UnLoadVCLStyles function from VclStylesInno.DLL
procedure UnLoadVCLStyles; external 'UnLoadVCLStyles@files:unins000.dll stdcall setuponly';
procedure UnLoadVCLStyles_UnInstall; external 'UnLoadVCLStyles@{app}\unins000.dll stdcall uninstallonly';
function InitializeSetup(): Boolean;
begin
ExtractTemporaryFile('unins000.vsf');
LoadVCLStyle(ExpandConstant('{tmp}\unins000.vsf'));
Result := True;
end;
procedure DeinitializeSetup();
begin
UnLoadVCLStyles;
end;
function InitializeUninstall: Boolean;
begin
Result := True;
LoadVCLStyle_UnInstall(ExpandConstant('{app}\unins000.vsf'));
end;
procedure DeinitializeUninstall();
begin
UnLoadVCLStyles_UnInstall;
DeleteFile(ExpandConstant('{app}\unins000.dll'));
end;
答案 0 :(得分:2)
您需要在删除之前卸载库。使用UnloadDLL
功能(帮助包含仅适用于此情况的示例)。缺少这导致DeleteFile
函数在代码中失败。对于卸载程序,请改为编写:
procedure LoadVCLStyle_UnInstall(VClStyleFile: String); external 'LoadVCLStyleA@{app}\unins000.dll stdcall uninstallonly';
procedure UnLoadVCLStyles_UnInstall; external 'UnLoadVCLStyles@{app}\unins000.dll stdcall uninstallonly';
function InitializeUninstall: Boolean;
begin
Result := True;
LoadVCLStyle_UnInstall(ExpandConstant('{app}\unins000.vsf'));
end;
procedure DeinitializeUninstall();
begin
UnLoadVCLStyles_UnInstall;
UnloadDLL(ExpandConstant('{app}\unins000.dll'));
DeleteFile(ExpandConstant('{app}\unins000.dll'));
end;