3

いくつかのフォルダー アイコンを変更し、これらのフォルダーを InnoSetup インストールに含めています。問題は、プログラムをインストールすると、カスタマイズしたフォルダ アイコンが消えて、昔ながらの「黄色」の Windows フォルダ アイコンだけが表示されることです。

編集

回答は、ユーザー TLama によって提供されました。最初は私のコンピューターで動作しました。さまざまなコンピューターのさまざまな Windows バージョンで問題が発生しました。いくつかのコンピューター システムで成功裏に試した後、作業コードを記述します。

使用されているアイコン:

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

変更されたフォルダ アイコン:

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

ステップ1:

「フォルダ アイコン チェンジャー」というソフトウェアを使用して、変更したい 3 つのフォルダのアイコンを配置しました。他のフリーソフトウェアも使用できます。実行後、新しく変更された各アイコン フォルダに 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:

コンパイル!

これで、フォルダ アイコンはどのコンピュータやシステムでも永久に機能します !!

4

2 に答える 2

4

ターゲット フォルダーには、読み取り専用またはシステム属性が構成されている必要があります。このようなフォルダーを作成するには、言及した Miral のように、[Dirs]セクションとその属性を使用できます。これには利点があります。インストール プロセスを実行した後、InnoSetup がシェルに変更を自動的に通知するため、追加の通知関数呼び出しなしでフォルダー アイコンが変更されます。

; 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(私はこれを数回見逃していて、セットアップ パッケージの内容)。

于 2012-09-09T08:58:12.993 に答える
1

カスタム フォルダ アイコンを有効にするには、desktop.iniファイルを含むフォルダの「読み取り専用」属性をプログラムで設定する必要があります。(Explorer からは実行できませんが、コマンド ラインと Inno から実行できます。)

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

ファイル内のパスはdesktop.ini、ユーザーのファイルシステムで有効でなければならないことに注意してください。[Ini] エントリを使用して、インストール パスに合わせてこのファイルを作成または変更することができます。

(これは実際にフォルダーを読み取り専用にするわけではありません。意味のある読み取り専用にできるのはファイルのみであるため、この属性は Windows によってフォルダーで異なる方法で処理されます。)

于 2012-09-08T21:52:01.423 に答える