WiXベースのインストーラーを複数のサーバーで台無しにして、アンインストール中にファイルやコンポーネント(またはその他の機能)が削除されないようにしました。MSIログは、アンインストールされないすべてのコンポーネントでPreviousPinned=1であることを示しています。
SharedDll countを使用したり、異なるインストーラー間で共有コンポーネントを使用したりするような、気の利いたことは何もありません。
私はそれを私のWiXコードの特定のリビジョンまで追跡したと思います。私はいくつかの愚かなことをしました。私は(意図せずに)空白のGUIDを使用してアンマネージコンポーネントを作成しました
<Component Id="file.ext" Guid="">
<File .../>
<Component>
また、別のコンポーネントのファイルの場所とIDも変更しました(ただし、Guidではありません)。以前のリビジョンに存在するすべてのコンポーネントはPreviousPinned=1を示し、アンインストールされず、このリビジョンの後に追加された新しいコンポーネントは正しくインストール/アンインストールされます。
インストーラーを通常の状態に戻し、以前に固定されたこれらのコンポーネントを削除するにはどうすればよいですか?