有哪些替代ClickOnce的选择?

67

我多年来一直使用 ClickOnce,但我遇到了很多它的限制。有没有其他可用于Web部署的替代品呢?

到目前为止,我找到的唯一一个是 ClickThrough ,它现在已成为WiX的一部分,但已经放在后炉中了。还有其他取得成功的替代产品吗?

4个回答

31

Squirrel(松鼠):就像ClickOnce一样,但更有效。

Squirrel既是工具集又是库,可完全管理桌面Windows应用程序的安装和更新,无论是用C#还是任何其他语言编写的(也就是说,Squirrel可以管理本地的C++应用程序)。

Squirrel使用NuGet包来创建安装和更新包,这意味着您可能已经知道大部分创建安装程序所需的内容。


6
Squirrel for Windows 不支持 Windows XP 或 .net 4.0,但如果可以接受这一点,那么它是一个很好的选择。 - Peter
Squirrel.Windows是ClickOnce的一个很好的替代品。我已经完成了从ClickOnce到Squirrel的迁移,并且每一步都非常顺利。我花了很多时间确保我理解所有可能影响我的迁移的方面,到目前为止,这个投资似乎是值得的。 - SomeInternetGuy
哦,它没有任何对话框或GUI来引导用户完成更新过程吗?只是在后台默默地复制文件吗? - user3700562

21

在使用了WiX、NSIS和InstallAware之后,我不得不谦虚地承认它们对于我作为软件开发者真正需要的东西都过于复杂了。到目前为止,我做过的项目都没有不能使用Visual Studio部署项目进行部署的。

它有限吗?是的。

但这也非常容易学习和使用。此外,您实际上可以通过使用这里描述的技术自动创建补丁(.MSP文件)。

我完全理解您不能在Visual Studio设置项目内部完成“一切”的事情,但您可完成的事情相当令人惊讶。它是免费的,易于使用,并且对于一般用途而言比花费无尽时间学习WiX的令人眼花缭乱的XML(尽管它很令人印象深刻)或InstallAware的冗长脚本更好。

使用VS Setup,只需拖放和构建即可部署。我尝试过的所有其他解决方案都存在问题...他们无法自动检测您的项目输出...或者需要特殊过滤器以避免包含构建中不需要的输出。

因此,我的建议是:如果您仅希望部署项目,请学习:

  1. 如何构建自定义安装程序类和
  2. 如何编写自己的先决条件包

这两项技能都相当容易掌握,并且满足大多数开发人员的需求。


9
Visual Studio的安装程序项目无法使用MsBuild进行构建,因此如果您正在自动化发布流程,则无法使用它们。 - Burt
26
自 VS2012 开始,.vdproj(VS 安装程序项目)已被取消支持。 - spender
1
.vdproj现在在VS 2013中得到支持。https://visualstudiogallery.msdn.microsoft.com/9abe329c-9bba-44a1-be59-0fbf6151054d - ErikEJ
2
Visual Studio的安装项目在某些Express版本中不可用(所有Express版本?)。 - Peter Mortensen
3
可以通过“管理扩展”将“Microsoft Visual Studio Installer Projects”添加到Visual Studio中。 - A.J.Bauer
显示剩余2条评论

5
你使用ClickOnce时遇到了哪些限制?当我不使用ClickOnce时,我使用NSIS(虽然你可以使用大多数其他安装程序语言/系统)来创建可运行的、自安装的应用程序。也就是说,当你运行下载时,它正在运行应用程序,并且没有任何设置问题。有一个菜单选项或频繁使用检测器,允许永久安装。两个难点是:
  1. 设置文件
  2. 本地注册表设置
对于设置文件,我使用远程Web服务来保存状态等信息。如果你需要本地注册表设置(文件关联等),那么你需要进行适当的安装,但这可以在用户第一次使用应用程序时静默完成。

NSIS安装程序不符合“设计用于”标志的要求。您必须使用Windows Installer,而且我认为使用旧版安装程序并不是一个好主意。 - coding Bott
2
NSIS 远未落伍,它仍然解决了许多在 WIX 等软件中不易解决的问题。您曾经有过客户要求“为...设计”的合规性吗?提供客户想要的可靠解决方案,而不是微软营销部门想要的! - TFD
@TFD NSIS对于企业客户来说不太好,如果不是MSI格式的话,就无法在1000多台机器上推广。 - saschabeaumont
@sascha 我们正在谈论那些不是通过企业部署机制部署的进程。这就是 ClickOnce 的用途。 - TFD
如果你想的话,可以使用WIX,但NSIS要简单得多,而且结果是一样的。 - TFD
1
ClickOnce有时会在十台计算机中的一台或十次更新中的一次出现故障。它总会找到一种方式,在最需要您的应用程序的那个时刻,为最不懂技术的人破解。因此,对我来说,最大的一致性问题就是缺乏可靠性。 - Simon_Weaver

3

看看这个:http://simpldeploy.com。它类似于Squirrel,但集成到了VS中,就像ClickOnce一样。而且它还有(可选的)对话框,也像ClickOnce一样。

Original Answer翻译成"最初的回答"


我喜欢这个选项,它比Squirrel简单得多。但不幸的是,它并不能完全替代ClickOnce。它只能使用URL,并且目前不支持文件服务器/UNC路径进行部署。作者说他们已经把这个问题放在了待办事项中,但不幸的是,似乎不会很快实现。:( - Stevie White
是的,这确实是一个问题。对于没有公共域名可用的环境,我们只需设置一个IIS并将其发布到服务器的URL上(http://myinternalserver/apps/myapp)。 - Daniel
尝试使用这个时,我遇到了一个不同的问题。首先是由于缺少 Microsoft.VisualStudio.Shell.15.0.dll 导致的错误,我不知道为什么,因为我一开始就使用 VS Pro 2017。所以我通过 NuGet 下载了它,使用 gacutil 将其安装到我的 GAC 中,现在我得到了这个日志条目:https://pastebin.com/RNLhx2Zi - Nii
在 2.0.0 版本中,VS 2017 出现了问题。现在已经在当前的 2.0.1 版本中修复了。谢谢。 - Daniel

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接