2012-09-08 43 views
3

我修改了一些文件夹图标,并将这些文件夹包含在我的InnoSetup安装中。问题是,一旦我的程序安装完毕,我的自定义文件夹图标就消失了,而我所看到的只是旧式的“黄色”Windows文件夹图标。在任何计算机中使用InnoSetup永久定制的文件夹图标

编辑

答案是由用户提供TLama。它首先在我的电脑上工作。我在不同的电脑上遇到了不同Windows版本的问题。在几台计算机系统中尝试成功之后,我会写现在的工作代码。

图标用于:

  • Ico1.ico
  • Ico2.ico
  • Ico3.ico

修改文件夹图标:

  • C:\ FDR1
  • c:\ FDR2 \ FDR3

第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步:

编译!

现在,您的文件夹图标将永久工作在任何电脑和系统!

+1

您不必将[已解决]放在您的标题中;标记为接受的答案就足够了。请查看[此Meta SO帖子](http://meta.stackexchange.com/q/116101/175248)了解更多信息。 – Makoto

+0

如果您找到答案,请将其作为答案发布,而不是替换一半的问题。 – Deanna

回答

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 

重要:

不要忘记,你必须编译运行,只要你改变你的输入Desktop.ini文件的内容之前,使用CTRL + F9脚本以及当你改变预处理器路径变量的值时(我已经错过了这几次,然后想知道安装包的内容)。

+1

非常感谢你TLama!我已经测试过,现在它在我的应用程序中运行。明天我会在另一台电脑和不同的硬盘上测试。它很可能也会好起来的。 –

+0

不客气!无论如何,如果可以,请尝试在Windows XP上进行测试。我目前只有Windows 7可用,所以我无法验证它,但据我所知,有相同的规则。 – TLama

+1

它的作品!看到我上面的编辑。 –

1

为了激活自定义文件夹图标,您必须以编程方式设置包含desktop.ini文件的文件夹的“只读”属性。 (你不能从资源管理器执行此操作,但可以通过命令行和Inno执行。)

[Dirs] 
Name: {app}; Attribs: readonly 

注意,desktop.ini文件中的路径必须是用户的文件系统有效;您可能需要使用[Ini]条目来创建或修改此文件以适应安装路径。

(这实际上并不为只读文件夹 - 这个属性是由Windows区别对待上的文件夹,因为只有文件可以进行有意义只读)

+0

谢谢,但它没有奏效。我应该只添加两行:“[Dirs]”和“Name:{app}; Attribs:只读”?安装后,我的文件夹仍然是黄色的。正如我所说,desktop.ini中没有路径。它被故意删除。通过擦除路径,我可以将文件夹移动到其他文件夹中,并将驱动器移动到分区HD上以及我拥有的其他HD上。结果是定制的文件夹保持自定义。但是,在安装Inno后,好吧......你知道的。每个文件夹都有一个* .ini和一个* .ico。如果你或者任何人能够给我更多的方向来解决这个问题,那将是很好的。 –

+0

您还需要确保desktop.ini文件具有'Attribs:system hidden'。它也可能有助于使用'[Setup]'下的'ChangesAssociations = yes',它告诉Windows刷新其图标缓存,但我不认为这是必需的。 – Miral

相关问题