1

インストール後、すべてのアイコンが標準アイコン (汎用/空白) だったため、最近、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 をサポートする必要があります。

よろしくアルダス

4

2 に答える 2