Inno setup 如何使用ISSkin库将皮肤应用于Inno安装卸载程序?

Inno setup 如何使用ISSkin库将皮肤应用于Inno安装卸载程序?,inno-setup,Inno Setup,我知道如何将皮肤应用到Inno安装程序的安装程序部分,但我不知道如何对Inno安装程序卸载程序执行同样的操作 如何将皮肤应用于卸载程序?除非您的用户运行卸载程序,否则您必须将ISSkin.dll库与皮肤文件一起解压缩到特定目录中并将其存储。这是因为卸载程序是由安装程序生成的应用程序,因此它们只是不同而已(例如,卸载程序不包含可以提取的文件) 您还需要考虑到,如果您希望对整个卸载过程进行蒙皮,则需要在卸载过程的最后卸载ISSkin.dll库,并且需要手动删除带有蒙皮文件的库。为此,我强烈建议您使用

我知道如何将皮肤应用到Inno安装程序的安装程序部分,但我不知道如何对Inno安装程序卸载程序执行同样的操作


如何将皮肤应用于卸载程序?

除非您的用户运行卸载程序,否则您必须将
ISSkin.dll
库与皮肤文件一起解压缩到特定目录中并将其存储。这是因为卸载程序是由安装程序生成的应用程序,因此它们只是不同而已(例如,卸载程序不包含可以提取的文件)

您还需要考虑到,如果您希望对整个卸载过程进行蒙皮,则需要在卸载过程的最后卸载
ISSkin.dll
库,并且需要手动删除带有蒙皮文件的库。为此,我强烈建议您使用与应用程序文件夹不同的文件夹,以便卸载程序正确地删除应用程序,其余的由您自己删除。以下是用于此本地应用程序数据文件夹的脚本示例:

你也可以跟着

[代码]
过程SetupLoadSkin(lpszPath:string;lpszIniFileName:string);
外部的LoadSkin@files:ISSkinU.dll stdcall setuponly';
皮肤的程序设置;
外部的UnloadSkin@files:ISSkinU.dll stdcall setuponly';
过程UninstLoadSkin(lpszPath:string;lpszIniFileName:string);
外部“LoadSkin@{#SetupSkinPath}\ISSkinU.dll stdcall uninstallonly”;
皮肤手术;
外部“UnloadSkin@{#SetupSkinPath}\ISSkinU.dll stdcall uninstallonly”;
函数ShowWindow(hWnd:hWnd;nCmdShow:Integer):BOOL;
外部的ShowWindow@user32.dllstdcall';
函数初始化设置:布尔;
开始
结果:=真;
提取临时文件('Office2007.cjstyles');
SetupLoadSkin(ExpandConstant({tmp}\Office2007.cjstyles'),'NormalBlack.ini');
结束;
程序去初始化设置;
开始
ShowWindow(stroint(ExpandConstant({wizardhwnd}')),SW_HIDE;
皮肤;
结束;
函数初始化安装:布尔值;
开始
结果:=真;
UninstLoadSkin(ExpandConstant({SetupSkinPath}\Office2007.cjstyles'),
“NormalBlack.ini”);
结束;
程序去初始化安装;
开始
未愈合的皮肤;
UnloadDLL(ExpandConstant('{#SetupSkinPath}\ISSkinU.dll');
DeleteFile(ExpandConstant({SetupSkinPath}\ISSkinU.dll');
DeleteFile(ExpandConstant({#SetupSkinPath}\Office2007.cjstyles');
RemoveDir(ExpandConstant('{#SetupSkinPath}');
结束;

非常感谢特拉玛,工作得很好。您能告诉我如何在单面台上创建标签吗?PagenameLabel、PageDescriptionLabel、StatusLabel和FilenameLabel。不客气!从评论中回答你的离题问题。前三个标签已经存在了,看看类引用和里面的内容。有了这个
filenamelab
我想你已经想到了
StatusLabel
。如果您的问题与如何在卸载程序窗体上的某个位置创建自己的标签有关,那么我会将其与安装程序进行比较,只是您将使用
WizardForm
对象而不是
UninstallProgressForm
来访问该窗体。好的,我的朋友,我会按照您的提示,很快返回。好的。我忘了提这件事;您需要在事件函数中执行此操作,而不是在安装程序中使用的
InitializeWizard
。如何创建您创建的框来显示我的脚本?对不起,我的无知。
[Setup]
AppName=My Program
AppVersion=1.5
DefaultDirName={pf}\My Program
OutputDir=userdocs:Inno Setup Examples Output

#define SetupSkinPath "{localappdata}\SetupSkin"

[Files]
Source: ISSkinU.dll; DestDir: {#SetupSkinPath}; Flags: uninsneveruninstall
Source: Styles\Office2007.cjstyles; DestDir: {#SetupSkinPath}; Flags: uninsneveruninstall