File InnoSetup:dll可以';无法在卸载时删除

File InnoSetup:dll可以';无法在卸载时删除,file,installation,inno-setup,pascal,pascalscript,File,Installation,Inno Setup,Pascal,Pascalscript,我正在使用此链接中提供的VCL样式对我的安装程序/卸载程序进行蒙皮: 但是当我卸载程序时,包含函数的dll不会被删除 我如何删除它 我考虑过这个替代方案:将dll复制到一个临时文件夹中,然后加载Windows Cleaner将来应该删除的临时dll,但这会给我带来另一个问题,我在这篇文章中谈到: 但这是另一个问题,我想知道的是如何删除这个dll文件 这是我正在使用的完整的[code]部分,请注意DeinitializeUninstall方法,我尝试在其中删除文件: // Import the L

我正在使用此链接中提供的VCL样式对我的安装程序/卸载程序进行蒙皮:

但是当我卸载程序时,包含函数的dll不会被删除

我如何删除它

我考虑过这个替代方案:将dll复制到一个临时文件夹中,然后加载Windows Cleaner将来应该删除的临时dll,但这会给我带来另一个问题,我在这篇文章中谈到: 但这是另一个问题,我想知道的是如何删除这个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;

删除前需要卸载库。为此使用函数(帮助中包含仅适用于此情况的示例)。缺少,这将导致代码中的
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;