InstallAllUsers选项如何工作?

时间:2012-03-28 21:08:00

标签: c# .net visual-studio-2010 visual-studio-setup-proje

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

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

  

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

它提供安装MSI的网络路径。所以,基本上,它正在寻找Alice无法访问的共享上的MSI。如果Alice尝试手动启动“启动”链接,则可重复进行此操作。 但是,Alice可以直接从安装位置启动exe,这样可以正常工作。

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

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

我的问题有几个部分:

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

2 个答案:

答案 0 :(得分:2)

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

此处有更多信息......

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

  

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

这就是为什么它试图运行msi。

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

DISABLEADVTSHORTCUTS=1 disables all shortcuts

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

答案 1 :(得分:1)

Eric,我建议您查看快捷方式文件内容。您可以使用Powershell执行此操作,并且有一个SO链接可以帮助您:

Editing shortcut (.lnk) properties with Powershell