在我的应用程序并排安装不同版本后,卸载一个版本不会从程序菜单中删除快捷方式。

时间:2013-07-11 18:17:50

标签: wix

我使用WIX创建了一个安装程序。作为安装的一部分,两个快捷方式(启动和卸载)将添加到“ProgramMenu-> MyCompany-> MyProductName”。

我并排安装同一个应用程序的两个版本后。我尝试使用卸载快捷方式卸载一个版本。

卸载会删除该版本的所有文件和文件夹。但未能删除快捷方式。当我再次点击卸载时。以下错误显示:

“此操作仅对当前安装的产品有效”

然后我为另一个版本运行卸载,这次成功删除了THAT版本的两个快捷方式。但是,将失败版本的快捷方式永久保留在“ProgramMenu-> MyCompany-> MyProductName”中。我不得不手动删除它们。

以下是我用来创建快捷方式的代码。我做错了什么?

     <Directory Id="ProgramMenuFolder">
        <Directory Id="MyCompanyShortcutDir" Name="MyCompany">
          <Directory Id="MyProductShortcutDir" Name="MyProduct">
            <Component Id="cmpMyProductShortcut" Guid="*">
              <Shortcut Id="MyAppShortcut" Name="My App" Description="My Application" Target="[INSTALLFOLDER]MyApp.exe" />
              <RemoveFolder Id="RemoveMyCompanyShortcutDir" On="uninstall" Directory="MyCompanyShortcutDir" />
              <RegistryValue Root="HKCU" Key="Software\My Company\My Product\" Name="Installed" Type="integer" Value="1" KeyPath="yes" />
            </Component>
            <Component Id="cmpUninstall" Guid="*">
              <Shortcut Id="UninstallShortcut" Name="Uninstall" Description="Uninstall My App"
                Target="[System64Folder]msiexec.exe" Arguments="/x [ProductCode] /Lv d:\uninstall.log " Directory="MyProductShortcutDir" />
              <RegistryValue Root="HKCU" Key="[Software\My Company\My Product\" Name="Uninstall" Type="integer" Value="1" KeyPath="yes" />
              <RemoveFolder Id="removeShortcut" On="uninstall"/>
            </Component>
          </Directory>
        </Directory>
      </Directory>

1 个答案:

答案 0 :(得分:1)

我自己解决了这个问题,基本上需要做两件事:

  1. 将ProductCode更改为*,这允许并排安装两个版本。
  2. 确保快捷键的组件指南也是*