【发布时间】:2012-03-28 21:08:00
【问题描述】:
我有一个 C# 应用程序和一个 Visual Studio (2010) 安装项目。在我的安装项目中,我使用的是InstallAllUsers = True。此外,我的应用程序需要在启动时启动,因此将一个快捷方式添加到User's Startup Folder。
所以我以用户 Bob(来自共享)的身份安装了我的应用程序,然后我注销并以用户 Alice 的身份登录。爱丽丝得到一个对话:
您尝试使用的功能位于不可用的网络资源上。
它提供了安装 MSI 的网络路径。因此,基本上,它在 Alice 无法访问的共享上寻找 MSI。如果 Alice 尝试手动启动 Startup 链接,这是可以重复重现的。 但是,Alice 可以直接从安装位置启动 exe,效果很好。
我不完全理解它为什么要寻找 MSI,但我想一个应用程序无法由一个用户为另一个用户完全安装是有道理的,因此需要 MSI完成安装。
但如果是这样的话,那么我不明白为什么似乎只在从启动链接启动时才需要 MSI,而不是直接从 exe 启动。
我的问题有几个部分:
-
InstallAllUsers选项的行为是否符合我的预期? - 如果是这样,我如何确保为所有用户完全安装我的应用程序?
- 是否需要将 msi 复制到本地,并确保在每个用户都有机会登录之前它不会被删除?
【问题讨论】:
-
我会检查快捷方式文件并查看它指向的位置。当其他用户使用该应用程序时,
InstallAllUsers不会查找 MSI。 -
两个用户的网络驱动器映射是否相同?
-
@code4life,真的吗?这对我来说是个好消息……不幸的是,这条捷径几乎没有给我任何信息。在属性中,它将
Target(灰色)列为我的应用程序名称(不是文件名 - 显示名称)。Target location为空白,Start in设置为我的应用程序 exe 的完整包含路径(不包括 exe,仅包含路径)。 -
@Jetti,不 - 它也不是从网络驱动器安装的。只是一条 UNC 路径。
-
@Eric:如果你手动创建一个新的快捷方式,它会起作用吗?如果是这样,您的问题肯定是原始快捷方式中的错误(可能指向 MSI 之类的)...
标签: c# .net visual-studio-2010 visual-studio-setup-proje