4

我有一个 C# 应用程序和一个 Visual Studio (2010) 安装项目。在我的安装项目中,我使用InstallAllUsers = True. 此外,我的应用程序需要在启动时启动,因此将一个快捷方式添加到User's Startup Folder.

因此,我以用户 Bob(来自共享)的身份安装了我的应用程序,然后以用户 Alice 的身份注销并登录。爱丽丝得到一个对话,说:

您尝试使用的功能位于不可用的网络资源上。

它提供了安装 MSI 的网络路径。因此,基本上,它在 Alice 无法访问的共享上寻找 MSI。如果 Alice 尝试手动启动 Startup 链接,这是可以重复重现的。 但是,Alice 可以直接从安装位置启动 exe,效果很好。

我不完全理解它为什么要寻找 MSI,但我想一个用户无法为另一个用户完全安装应用程序是有道理的,因此需要 MSI 才能完成安装。

但如果是这种情况,那么我不明白为什么只有在从启动链接启动时才需要 MSI,而不是直接从 exe 启动。

我的问题有几个部分:

  1. 我正在经历该InstallAllUsers选项的预期行为吗?
  2. 如果是这样,我如何确保我的应用程序已为所有用户完全安装?
  3. 是否有必要在本地复制 msi,并确保在每个用户有机会登录之前它不会被删除?
4

2 回答 2

2

发生这种情况是因为快捷方式是“广告快捷方式”,因此是灰色的目标框。

更多信息在这里...

http://www.advancedinstaller.com/user-guide/advertised-shortcuts.html

当广告的快捷方式启动时,它会验证与关键资源关联的检查。如果缺少任何内容,它将通过运行安装包并再次安装 .msi 文件中的所有信息来修复它。

这就是它试图运行 msi 的原因。

您可以通过阅读这篇文章来关闭广告的快捷方式...

DISABLEADVTSHORTCUTS=1 禁用所有快捷方式

如果它是所有用户安装的,那么快捷方式可能希望驻留在所有用户开始菜单中。Win 7:C:\ProgramData\Microsoft\Windows\开始菜单。

于 2012-03-28T22:00:19.543 回答
1

Eric,我建议您看一下快捷方式文件的内容。您可以使用 Powershell 来做到这一点,并且有一个 SO 链接可以帮助您:

使用 Powershell 编辑快捷方式 (.lnk) 属性

于 2012-03-28T21:55:10.707 回答