问题
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;
回答1:
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.
来源:https://stackoverflow.com/questions/36745054/how-to-apply-vcl-styles-to-dll-based-forms-in-inno-setup-for-uninstall-cannot-i