我修改了一些文件夹图标,我在InnoSetup安装中包含了这些文件夹。问题是,一旦安装了我的程序,我的自定义文件夹图标就会消失,我看到的只是旧式的“黄色”Windows文件夹图标。
修改
答案由用户TLama提供。它起初在我的电脑上工作。我在不同的计算机上遇到了不同Windows版本的问题。在几个计算机系统中成功试用后,我现在将编写我的工作代码。
使用的图标:
修改过的文件夹图标:
第1步:
我使用软件“文件夹图标更换器”为我想要更改的三个文件夹设置了我的图标。您也可以使用任何其他免费软件。执行后,每个新更改的图标文件夹中都会出现desktop.ini。例如,FDR1的内容为:
[.Shellclassinfo]
Iconfile=F:\Resource\Icons\Ico1.ico
Iconindex= 0
第2步:
然后我删除了上面的路径并将“Ico1.ico”保存到我刚刚修改的目录“c:\ FDR1”中:
[.Shellclassinfo]
Iconfile=Ico1.ico
Iconindex= 0
我为Ico2.ico(FDR2内部)和Ico3.ico(FDR3内部)做了同样的事情。 “Icon1,2和3”和“desktop.ini”文件属性都设置为隐藏。但是,重要的是不要将图标属性设置为“只读”。
第3步:
Inno内部重复了TLama的建议。
#define OutputDirectory_1 "c:\FDR1"
#define OutputDirectory_2 "c:\FDR2"
#define OutputDirectory_3 "c:\FDR2\FDR3"
[Dirs]
Name: {#OutputDirectory_1}; Attribs: system
Name: {#OutputDirectory_2}; Attribs: system
Name: {#OutputDirectory_3}; Attribs: system
[Files]
Source: "c:\FDR1\Ico1.ico"; DestDir: {#OutputDirectory_1}; Attribs: hidden system
Source: "c:\FDR2\Ico2.ico"; DestDir: {#OutputDirectory_2}; Attribs: hidden system
Source: "c:\FDR2\FDR3\Ico3.ico"; DestDir: {#OutputDirectory_3}; Attribs: hidden system
第4步:
编译!
现在,您的文件夹图标将永久在任何计算机和系统中运行!!
答案 0 :(得分:4)
您的目标文件夹应该配置为只读或系统属性。要创建此类文件夹,您可以像Miral所提到的那样使用[Dirs]
部分及其属性。这将有一个优势,即在您运行安装过程后,InnoSetup会自动通知Shell有关更改的信息,因此文件夹图标将在没有额外通知函数调用的情况下进行更改。
; this is a defined preprocessor variable used to simplify the script
; management; this variable contains the path, where the icon will be
; applied (it's used twice in a script, so it's easier to manage that
; from one place)
#define OutputDirectory "d:\TargetDirectory"
[Setup]
AppName=My Program
AppVersion=1.5
DefaultDirName={pf}\My Program
OutputDir=userdocs:Inno Setup Examples Output
[Files]
; here you need to use "hidden" and "system" values in Attribs parameter
; to include into the Desktop.ini file hidden and system file attributes
Source: "Desktop.ini"; DestDir: {#OutputDirectory}; Attribs: hidden system
[Dirs]
; here you need to use either "readonly" or "system" value in Attribs parameter
; to setup to the output directory read only or system file directory attribute
Name: {#OutputDirectory}; Attribs: readonly
重要:强> 的
不要忘记在运行之前必须使用 CTRL + F9 编译脚本,无论何时更改输入Desktop.ini
文件的内容以及更改值时预处理程序路径变量(我已经错过了几次然后想知道安装程序包内容)。
答案 1 :(得分:1)
要激活自定义文件夹图标,您必须以编程方式设置包含desktop.ini
文件的文件夹的“只读”属性。 (您不能从资源管理器中执行此操作,但您可以通过命令行和Inno执行此操作。)
[Dirs]
Name: {app}; Attribs: readonly
请注意,desktop.ini
文件中的路径必须在用户的文件系统上有效;您可能希望使用[Ini]条目来创建或修改此文件以适合安装路径。
(这实际上并不使文件夹成为只读文件 - Windows对文件夹的处理方式不同,因为只有文件才能有意义地为只读文件。)