2

inno-setup に関する簡単な質問: アンインストーラーによって削除されるファイルをカスタマイズできますか? 私が知っているように、アンインストーラーは常にインストーラーによって作成されたすべてのファイルをアンインストールします。答えが「はい」の場合、そのためにはどうすればよいですか?

私の場合: アプリケーションをインストールした後、ディレクトリ "{pf}\myapp\" にはいくつかの dll、2 つの実行可能ファイルが含まれ、実行可能ファイルごとに 2 つのデスクトップ アイコンとアンインストーラが作成されます。私が期待しているのは、ユーザーがすべてのファイルではなく、各実行可能ファイルをアンインストールできることです。残りの実行可能ファイルが 1 つだけの場合、アンインストーラーはすべてのファイルを削除します。

前もって感謝します。

4

1 に答える 1

2

個別のアンインストーラーが必要な場合は、個別のインストーラーを作成する必要があります。原則として、アプリケーションごとに個別のインストーラーを作成する必要があります。

つまり、個別のアプリケーション間で共有される dll や実行可能ファイルなどの共有ファイルをいくつでも持つことができます。

Windows には、参照カウントを使用して、共有ファイルを追跡するための適切に定義された手順があります。参照カウントは、インストーラーによって増分され、アンインストーラーによって減分されます。アンインストール中に参照カウントが 0 に達した場合にのみ、ファイルはシステムから削除されます。

sharedfileフラグを使用して、ファイルが共有されていることをインストーラーに指示します。次の例では、MyLib.dll ファイルが共有されています。

[Files]
Source: "MyProg.exe"; DestDir: "{app}"
Source: "MyProg.chm"; DestDir: "{app}"
Source: "MyLib.dll"; DestDir: "{sys}"; Flags: sharedfile
Source: "Readme.txt"; DestDir: "{app}"; Flags: isreadme

ドキュメントから(強調鉱山):

共有ファイル

ファイルが複数のアプリケーション間で共有され、他のアプリケーションがそのファイルを使用していない場合にのみ、アンインストール時に削除する必要があることを指定します。.OCX、.BPL、および .DPL ファイルを含む、Windows システム ディレクトリにインストールされるほとんどのファイルは、このフラグを使用する必要があります。

Windows の標準共有ファイル参照カウント メカニズム (HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows\CurrentVersion\SharedDLLs の下のレジストリにあります) を使用して、ファイルに依存するアプリケーションの数を追跡します。ファイルがインストールされるたびに、ファイルの参照カウントがインクリメントされます。(これは、インストーラーが実際にディスク上のファイルを置き換えるかどうかに関係なく発生します。) ファイルを使用するアプリケーションがアンインストールされると、参照カウントが減少します。カウントがゼロになると、ファイルは削除されます (uninsnosharedfilepromptフラグも指定されていない限り、ユーザーの確認が必要です)。

于 2013-02-20T19:03:35.020 に答える