インストール後、すべてのアイコンが標準アイコン (汎用/空白) だったため、最近、Advertized プロパティをインストールから削除しました。ここで、この種のコードを使用します。
<DirectoryRef Id="MyAppShortcutFolder">
<Component Id="MyAppShortcuts" DiskId="1" Guid="MyGuid">
<CreateFolder />
<RegistryKey Action="createAndRemoveOnUninstall" Root="HKCU" Key="$(var.MyAppRegKey)\Shortcuts">
<RegistryValue Name="ClientShortcuts" Value="yes" Type="string" KeyPath="yes" />
</RegistryKey>
<Shortcut Id="MyAppShortcut" Directory="MyAppShortcutFolder"
Name="!(loc.ShortcutMyAppName)"
WorkingDirectory="MYAPPINSTALLDIR"
Target="[MYAPPINSTALLDIR]MyApp.exe"
Arguments='xxx"'
Icon="ARPPRODUCTICON.exe" />
<RemoveFolder Id='RmdirClientShortcutFolder' Directory='MyAppShortcutFolder' On='uninstall' />
</Component>
...
<Icon Id="ARPPRODUCTICON.exe" SourceFile="$(var.MyAppBasePath)\ICO\MyAppShortcut.ico" />
これにより、「%systemroot%/A-GUID-Here/ARPPRODUCTICON.exe」のような場所にインストールされたアイコンを指すショートカットが作成されます。ショートカットがデスクトップにコピーされない限り、これは正常に機能します。ユーザーがこれを行い (実際には非常に一般的)、後でソフトウェアの新しいバージョン (おそらく「メジャー」アップデート) をインストールすると、古いショートカット アイコンがアンインストールされ、新しいショートカット アイコン用に新しい GUID が作成されます。これにより、(古い) デスクトップ ショートカットのアイコンが失われます。
本当に必要なのは、MyApp.exe の組み込みリソースからアイコンを指摘することです。これが不可能な場合は、アップグレード後も古いショートカットが機能するように、ショートカット アイコンが永続的な場所を参照するようにします。インストールには、おそらく 10 個のショートカットがあります。必要に応じて、ICON リソースを格納するためだけの特別なリソース DLL/EXE を作成できます。しかし、%systemroot% の代わりに「ローカルに」インストールされたファイルを短く指摘するにはどうすればよいでしょうか?
Wix3.5を使用しています。Windows XP/2003 をサポートする必要があります。
よろしくアルダス