为所有用户发布项目

Posted

技术标签:

【中文标题】为所有用户发布项目【英文标题】:Publish project for all users 【发布时间】:2015-09-05 19:49:06 【问题描述】:

我创建了一个 C# Windows 窗体项目。

当我单击“发布”时,它会部署这个仅针对单个用户的单击一次应用程序。如果我在我的管理员帐户上运行安装,那么我的 AppData 中有一个快捷方式,我可以单击它来运行我的程序。如果我尝试将该快捷方式复制到 C:\users\Public 会发生什么情况是另一个单击一次应用程序被放置在用户的桌面上。然后该用户必须运行安装,这很烦人,因为如果我有更新,每个用户都必须卸载并重新安装新应用程序。有什么方法可以配置 VS 2015 以为所有用户创建“常规”安装的方式发布?

【问题讨论】:

ClickOnce 的工作原理并非如此。它被设计为存在于用户的个人资料中。启动应用程序时会自动升级,除非出现问题,否则升级速度应该相当快。 【参考方案1】:

RobinDotNet 在不久前的一篇博文中解决了这个问题:

进行全用户安装与 ClickOnce 部署的设计目标背道而驰,因此我认为这将是每个人都必须忍受的事情,至少目前是这样。如果您绝对必须安装所有用户,那么使用 XCopy 或安装和部署包并滚动您自己的增量更新方法将是可行的方法

https://robindotnet.wordpress.com/2009/09/07/installing-a-clickonce-application-for-all-users/

this SO answer 中列出了更多可能适合您的替代部署方法。

【讨论】:

【参考方案2】:

您不能使用 ClickOnce 执行此操作。您可能需要安装 Windows Installer XML 以创建常规 MSI 安装程序。它现在与 Visual Studio 集成。

【讨论】:

【参考方案3】:

正如其他人指出的那样,CO 是按用户计算的。没有为所有用户安装机器选项。

但是,我觉得您在升级方面的影响要么被误导,要么配置错误。单击一次升级不需要用户卸载、下载和安装新版本。那不完全是单击一次。

您可以将 ClickOnce 应用配置为在升级可用时自动检测、获取和应用升级。这可以在代码中完成,这样您就可以通过编程或配置来控制它(即每次应用程序启动时检查更新)。

所以是的,每个用户都需要安装一次应用程序,但这将是他们参与的结束。

【讨论】:

以上是关于为所有用户发布项目的主要内容,如果未能解决你的问题,请参考以下文章

Smack API中特定用户的所有发布-订阅项目列表?

Gitlab:创建只有登录用户才能看到所有项目的组? (包括外部用户)

如何查看 sitecore 6 中的所有归档项目

如何有效地将用户添加到 GitLab 中的所有项目(以编程方式或其他方式)

为所有视图提供额外的上下文

为所有视图提供额外的上下文