Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/file/3.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Inno setup 在对Inno安装卸载程序进行蒙皮时,为什么需要使用uninsneveruninstall标志?_Inno Setup_Skinning_Uninstallation_Vcl Styles - Fatal编程技术网

Inno setup 在对Inno安装卸载程序进行蒙皮时,为什么需要使用uninsneveruninstall标志?

Inno setup 在对Inno安装卸载程序进行蒙皮时,为什么需要使用uninsneveruninstall标志?,inno-setup,skinning,uninstallation,vcl-styles,Inno Setup,Skinning,Uninstallation,Vcl Styles,我对此有点困惑。我特别对卸载程序方面感兴趣 他们提供的样本如下: #定义VCLStylesSkinPath“{localappdata}\VCLStylesSkin” [档案] 来源:..\VclStylesinno.dll;DestDir:{VCLStylesSkinPath};标志:uninsneveruninstall 来源:..\Styles\Amakrits.vsf;DestDir:{VCLStylesSkinPath};标志:uninsneveruninstall [守则] {从Vc

我对此有点困惑。我特别对卸载程序方面感兴趣

他们提供的样本如下:

#定义VCLStylesSkinPath“{localappdata}\VCLStylesSkin”
[档案]
来源:..\VclStylesinno.dll;DestDir:{VCLStylesSkinPath};标志:uninsneveruninstall
来源:..\Styles\Amakrits.vsf;DestDir:{VCLStylesSkinPath};标志:uninsneveruninstall
[守则]
{从VclStylesInno.DLL导入LoadVCLStyle函数}
过程装入vclstyle(VClStyleFile:String);
外部的LoadVCLStyleW@files:VclStylesInno.dll stdcall setuponly';
程序LoadVCLStyle_UnInstall(VClStyleFile:String);
外部“LoadVCLStyleW@{#VCLStylesSkinPath}\VclStylesInno.dll stdcall uninstallonly”;
{从VclStylesInno.DLL导入UnLoadVCLStyles函数}
程序风格;
外部的UnLoadVCLStyles@files:VclStylesInno.dll stdcall setuponly';
卸载的过程;
外部“UnLoadVCLStyles@{#VCLStylesSkinPath}\VclStylesInno.dll stdcall uninstallonly”;
函数InitializeSetup():Boolean;
开始
提取临时文件('Amakrits.vsf');
LoadVCLStyle(ExpandConstant('{tmp}\Amakrits.vsf'));
结果:=真;
结束;
过程去初始化设置();
开始
不确定的风格;
结束;
函数初始化安装:布尔值;
开始
结果:=真;
LoadVCLStyle_UnInstall(ExpandConstant({VCLStylesSkinPath}\Amakrits.vsf');
结束;
程序取消初始化安装();
开始
卸载advclstyles\u卸载;
结束;
我对这一点很感兴趣:

Source: ..\VclStylesinno.dll; DestDir: {#VCLStylesSkinPath}; Flags: uninsneveruninstall
Source: ..\Styles\Amakrits.vsf; DestDir: {#VCLStylesSkinPath}; Flags: uninsneveruninstall

我知道需要安装这些文件,因为卸载程序需要这些文件。但是为什么要使用
uninseneveruninstall
标志呢?这种行为可以接受吗?

这是一个动态链接库。它已加载到卸载程序中。因此,卸载程序无法删除它。因此,该标志存在,以避免卸载程序在无意义地尝试删除文件时失败

有关更好的解决方案,请参阅我对的回答的第二部分: