2

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 '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;
Martin Prikryl
  • 188,800
  • 56
  • 490
  • 992
darkK
  • 101
  • 5

1 Answers1

2

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.

Martin Prikryl
  • 188,800
  • 56
  • 490
  • 992