This is related to this question.
My [Files]
section is as the official example (although I have also tried with removal of the Flags
for each line):
[Files]
; Add the ISSkin DLL used for skinning Inno Setup installations.
Source: {#InnoPath}\VclStylesinno.dll; DestDir: "{app}"; Flags: uninsneveruninstall
; Add the Visual Style resource contains resources used for skinning,
; you can also use Microsoft Visual Styles (*.msstyles) resources.
Source: {#InnoPath}\Styles\{#Skin}; DestDir: "{app}"; Flags: uninsneveruninstall
This is how my uninstaller works in the [Code]
section:
function InitializeUninstall: Boolean;
begin
Result := True;
if FileCopy(ExpandConstant('{app}\VclStylesinno.dll'),
ExpandConstant('{%TEMP}\VclStylesinno.dll'), False) and
FileCopy(ExpandConstant('{app}\{#Skin}'),
ExpandConstant('{%TEMP}\{#Skin}'), False)then
begin
LoadVCLStyle_UnInstall(ExpandConstant('{app}\{#Skin}'));
end;
end;
procedure DeinitializeUninstall();
begin
UnLoadVCLStyles_UnInstall;
end;
I find that after the uninstall finishes the VclStylesinno.dll
file remains in the application data folder.
I load the actual procedures using the official example:
{ Import the UnLoadVCLStyles function from VclStylesInno.DLL }
procedure UnLoadVCLStyles; external 'UnLoadVCLStyles@files:VclStylesInno.dll stdcall setuponly';
procedure UnLoadVCLStyles_UnInstall; external 'UnLoadVCLStyles@{app}\VclStylesInno.dll stdcall uninstallonly';
Update
Here is the uninstall log:
https://www.dropbox.com/s/mzjebitwvkirhto/msa-log.txt?dl=0
- I changed the
[File]
entries:
[Files]
; Add the ISSkin DLL used for skinning Inno Setup installations.
Source: {#InnoPath}\VclStylesinno.dll; DestDir: "{app}"
; Add the Visual Style resource contains resources used for skinning,
; you can also use Microsoft Visual Styles (*.msstyles) resources.
Source: {#InnoPath}\Styles\{#Skin}; DestDir: "{app}"
- I changed this to use the
{%TEMP}
folder:
function InitializeUninstall: Boolean;
begin
Result := True;
if FileCopy(ExpandConstant('{app}\VclStylesinno.dll'),
ExpandConstant('{%TEMP}\VclStylesinno.dll'), False) and
FileCopy(ExpandConstant('{app}\{#Skin}'),
ExpandConstant('{%TEMP}\{#Skin}'), False)then
begin
LoadVCLStyle_UnInstall(ExpandConstant('{%TEMP}\{#Skin}'));
end;
end;
- And I changed:
{ Import the UnLoadVCLStyles function from VclStylesInno.DLL }
procedure UnLoadVCLStyles; external 'UnLoadVCLStyles@files:VclStylesInno.dll stdcall setuponly';
procedure UnLoadVCLStyles_UnInstall; external 'UnLoadVCLStyles@{%TEMP}\VclStylesInno.dll stdcall uninstallonly delayload';
The DLL still remains in the app folder.
Update 2
Did uninstall as requested, manually deleted the DLL file, and performed fresh install / uninstall. The app folder is now empty!
- Install log: https://www.dropbox.com/s/98q3n4xuuup0klo/msa-install-log1.txt?dl=0
- Uninstall log: https://www.dropbox.com/s/wm7jdp42v64rt4v/msa-uninstall-log1.txt?dl=0
Is there any reason that the main app folder does not get deleted now since it is empty?