簡體   English   中英

永久自定義文件夾圖標與InnoSetup在任何計算機中

[英]Permanent customized folder icons with InnoSetup in any computer

我修改了一些文件夾圖標,我在InnoSetup安裝中包含了這些文件夾。 問題是,一旦我的程序安裝完畢,我的自定義文件夾圖標就會消失,我看到的只是舊式的“黃色”Windows文件夾圖標。

編輯

答案由用戶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步:

編譯!

現在,您的文件夾圖標將永久在任何計算機和系統中工作!

您的目標文件夾應該具有只讀或系統屬性配置。 要創建這樣的文件夾,您可以像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文件的內容以及更改預處理器路徑變量的值時(我一直在想這個)幾次,然后想知道安裝包內容)。

要激活自定義文件夾圖標,您必須以編程方式設置包含desktop.ini文件的文件夾的“只讀”屬性。 (您不能從資源管理器中執行此操作,但您可以通過命令行和Inno。)

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

請注意, desktop.ini文件中的路徑必須在用戶的文件系統上有效; 您可能希望使用[Ini]條目來創建或修改此文件以適合安裝路徑。

(這實際上並不使文件夾成為只讀 - Windows對文件夾的處理方式不同,因為只有文件才能有意義地為只讀文件。)

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM