如何在Inno Setup中将VCL样式应用于基于DLL的表单以进行卸载?无法导入dll

时间:2016-04-20 13:16:00

标签: inno-setup pascalscript vcl-styles

我正在尝试为我的安装程序添加VCL样式(Inno Setup 5.5.6(a))。样式在安装过程中正确加载,但是当我尝试卸载时出现错误

  

运行时错误(at-1:0):无法导入dll:VclStylesInno.dll。

我无法卸载我的程序。

有谁知道我能做什么? 谢谢你的帮助

#define VCLStylesSkinPath "{localappdata}\VCLStylesSkin"

[Files]
;Install
Source: "VclStylesinno.dll"; DestDir: "{app}"; Flags: dontcopy
Source: "Styles\Auric.vsf"; DestDir: "{app}"; Flags: dontcopy
;Uninstall
Source: "VclStylesinno.dll"; DestDir: "{#VCLStylesSkinPath}"; Flags: uninsneveruninstall
Source: "Styles\Auric.vsf"; DestDir: "{#VCLStylesSkinPath}"; Flags: uninsneveruninstall

[Code]

// Import the LoadVCLStyle function from VclStylesInno.DLL
procedure LoadVCLStyle(VClStyleFile: String); external 'LoadVCLStyleA@files:VclStylesInno.dll stdcall setuponly';
procedure LoadVCLStyle_UnInstall(VClStyleFile: String); external 'LoadVCLStyleA@VclStylesInno.dll stdcall uninstallonly';

// Import the UnLoadVCLStyles function from VclStylesInno.DLL
procedure UnLoadVCLStyles; external 'UnLoadVCLStyles@files:VclStylesInno.dll stdcall setuponly';
procedure UnLoadVCLStyles_UnInstall; external 'UnLoadVCLStyles@VclStylesInno.dll stdcall uninstallonly';

function InitializeUninstall: Boolean;
begin
  Result := True;
  LoadVCLStyle_UnInstall(ExpandConstant('Styles\Auric.vsf'));
end;

procedure DeinitializeUninstall();
begin
  UnLoadVCLStyles_UnInstall;
end;

1 个答案:

答案 0 :(得分:1)

您没有指定VclStylesInno.dll的卸载副本的路径。

这是正确的方法:

procedure LoadVCLStyle_UnInstall(VClStyleFile: String); 
    external 'LoadVCLStyleA@{#VCLStylesSkinPath}\VclStylesInno.dll stdcall uninstallonly';

下次,请关注官方instructions for uninstalling the VCL Styles for Inno Setup

相关问题