darkK
darkK

Reputation: 101

How to apply VCL Styles to DLL-based forms in Inno Setup for uninstall? Cannot Import dll

I'm trying to add VCL styles (Inno Setup 5.5.6 (a)) for my installer. Style load correctly during the installation, but when I try to uninstall I get an error

Runtime Error(at-1:0): Cannot Import dll:VclStylesInno.dll.

And I can not uninstall my program.

Does anyone know what I can do?
Thanks for the help

#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 '[email protected] stdcall uninstallonly';

{ Import the UnLoadVCLStyles function from VclStylesInno.DLL }
procedure UnLoadVCLStyles;
  external 'UnLoadVCLStyles@files:VclStylesInno.dll stdcall setuponly';
procedure UnLoadVCLStyles_UnInstall;
  external '[email protected] stdcall uninstallonly';
    
function InitializeUninstall: Boolean;
begin
  Result := True;
  LoadVCLStyle_UnInstall(ExpandConstant('Styles\Auric.vsf'));
end;

procedure DeinitializeUninstall();
begin
  UnLoadVCLStyles_UnInstall;
end;

Upvotes: 2

Views: 773

Answers (1)

Martin Prikryl
Martin Prikryl

Reputation: 202504

You are not specifying a path to the uninstall copy of the VclStylesInno.dll.

This is the correct way:

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

Next time, just follow the official instructions for uninstalling the VCL Styles for Inno Setup.

For more details and maybe even a better solution than the official one, see also Load external DLL for uninstall process in Inno Setup.

Upvotes: 2

Related Questions