1

我有一个 Visual Studio 安装程序安装项目,它输出一个用于在系统上安装的 .msi 文件。我正在使用带有 .Net 4.0 的 Visual Studio Pro 2013。

该应用程序主要供非管理员 Windows 7 用户使用。但是,由于用户限制,该程序安装在管理员帐户的计算机上,并InstallAllUsers设置为True.

部署项目在桌面和程序菜单中添加了一个快捷方式。

安装后,删除安装程序的闪存驱动器,并通过管理员帐户上的快捷方式手动启动应用程序,没有问题。

但是,当使用创建的快捷方式在非管理员帐户上首次启动应用程序时会遇到问题。这是发生以下错误的地方:

找不到产品 MyApp 的安装包。使用安装包“MyApp.msi”的有效副本再次尝试安装。

有趣的是,如果我尝试直接从 Program Files 文件夹启动可执行文件,它工作得很好。我什至可以手动创建快捷方式,这也可以。最后,如果我真的将程序定向到闪存驱动器中的 .msi 文件,问题就会消失。但这是手动密集型的,特别是如果必须在计算机上的多个非管理员帐户上完成。我希望能够在管理员帐户上安装一次程序并忘记。

为什么我会收到此错误?为什么 Windows 在安装应用程序后寻找 .msi 文件?有没有办法通过更改部署项目中的某些属性来避免它?

4

1 回答 1

0

经过更多研究,我发现 Windows 尝试查找安装文件的原因是因为在 Visual Studio 安装程序安装项目中创建的快捷方式是广告快捷方式(与非广告快捷方式相比​​)。广告快捷方式让 Windows 通过替换快捷方式指向的任何丢失文件来修复安装(类似问题在这里)。

似乎 Visual Studio 安装程序安装项目不支持非广告快捷方式,尽管它们可以被欺骗安装(更多信息在这里)。

此外,我的安装项目也一定有问题,因为在启动时 Windows 认为它​​需要修复它。因此,我决定从 Visual Studio 安装程序安装项目切换到WIX 。WIX 应该可以更好地控制我想要安装的内容,虽然我不打算使用非广告快捷方式,但它支持它们。

于 2016-08-12T15:27:30.670 回答