5

Windows のインストールには WiX を使用しています。

最近まで問題なくメジャー アップグレードをサポートしていました。

製品名を変更したため、ショートカット名を変更するように依頼されました。だから私はそれを変更しました。

メジャー アップグレード後、1 つではなく 2 つのショートカットが表示されます。

美しさは、同じマシンに移行されたすべての機能をインストールしているときに、古いショートカットが適切に削除されたようです.

しかし、機能の 1 つ (Web サーバー機能) を (Web サーバー) マシンにインストールすると、2 つのショートカットが表示されます。

Webサーバー機能にもショートカットコンポーネントが追加されていることを確認しました。

 <DirectoryRef Id="ProgramMenu.OrganizationName.MyProj">
          <Component Id="CoreInterface_Shortcuts" Guid="3e3c3733-9b53-42cf-a641-b5b3e3da88cf">
            <Shortcut Id="MyOrgMESUrl" Name="Home" Description="MyOrg Intuition URL" Target="[INSTALLDIR]MyOrg MES.url" WorkingDirectory="INSTALLDIR"/>
            <RemoveFolder Id="RemProgramMenu.MyOrg" Directory="ProgramMenu.MyOrg" On="uninstall"/>
            <RemoveFolder Id="RemProgramMenu.MyOrg.MyProj" Directory="ProgramMenu.MyOrg.MyProj" On="uninstall"/>
            <RegistryValue Root="HKCU" Key="Software\MyOrg\MyProj" Name="installed" Type="integer" Value="1" KeyPath="yes"/>
          </Component>
        </DirectoryRef>

<Feature Id="WEBSERVER" Title="WEBSERVER Customized Component(s)" Level="1">
      <ComponentRef Id="CoreInterface_Shortcuts"/>
</Feature>

古いショートカットが維持されるのはなぜですか (古いショートカットをクリックすると機能しません)。これを回避する方法は?

4

1 に答える 1

7

理由は簡単です。あなたはベストプラクティスに従っていません。

名前を変更するときは、コンポーネント GUID を変更する必要があります。

ドキュメントを参照してください:

コンポーネントの以前のバージョンと互換性があることがテストによって示されていない変更。この場合、コンポーネント内のすべてのリソースの名前またはターゲットの場所も変更する必要があります。

コンポーネント内のファイル、レジストリ キー、ショートカット、またはその他のリソースの名前またはターゲットの場所の変更。この場合、コンポーネント内のすべてのリソースの名前またはターゲットの場所も変更する必要があります。

コンポーネントに対するファイル、レジストリ キー、ショートカット、またはその他のリソースの追加または削除。この場合、コンポーネント内のすべてのリソースの名前またはターゲットの場所も変更する必要があります。

コンポーネント コードの変更 (Windows)

アップデートは、ファイルを再インストール/上書きするだけです。ソースファイルと名前は新しい msi から取得されます。ファイル/ショートカットの名前を変更すると、古いファイル名への参照が失われます。これが、インストーラーによって古いリンクが変更されておらず、上書きされていない理由です。

于 2013-02-13T12:51:15.577 に答える