我希望尽可能避免使用我的应用程序重新分发.NET运行时,因为它会增加应用程序的大小,下载时间,开发时间和时间。可能会引入许多不同的部署错误。 Microsoft是否强制用户通过Windows更新更新.NET运行时?如果没有,重新分配.NET运行时有哪些选项? Microsoft是否更容易使用.NET应用程序重新分配运行时?此外,.NET运行时是否可以向后兼容?
我只是在这里总结答案。看起来我们必须有一个引导程序,至少检查是否存在.NET运行时。另一种选择是打包运行时并在它不存在时进行部署。包装和包装有多种选择。 Visual Studio确实提供了使用运行时构建安装程序项目的选项。还有其他包装选项,如InnoSetup,WIX等(不确定哪个选项更好,更免费)。运行时安装需要重新启动,所选的安装选项应在重新启动后恢复应用程序安装。
答案 0 :(得分:3)
制作Windows Installer项目。您应该在VS2005和VS2008中选择此选项。它将确保在安装应用程序时系统具有.NET运行时以及任何其他所需的软件。这会将它添加到您的安装程序包,而不是您的应用程序。这通常是您安装应用程序或使用Install Shield的方式。
alt text http://img154.imageshack.us/img154/2066/newprojectr.png
答案 1 :(得分:2)
此外,您应该担心这一点。没有运行时,您的应用程序将神秘地无法工作。您永远不应该假设某些特定版本的运行时已预先安装。
如上所述,VS中的安装程序项目向导将创建一个仅在需要时才下载的安装文件。 NSIS和Inno Setup有脚本可以做同样的事情。请注意,安装运行时需要处理reboot-and-continue-setup。我相信安装程序向导会为您处理此问题。
答案 2 :(得分:1)
创建安装程序包时,只有在需要时才会安装运行时。即尚未在系统上(或错误的版本)
编辑:是的,你应该创建这个包,它可以让你的生活更加容易。在VS中执行此操作的方式是File-> Project并选择intstaller项目。该向导将指导您完成选项。
答案 3 :(得分:1)
使用某种类型的引导程序,您可以检查是否安装了.NET,然后在必要时下载它。
例如,使用MSI Factory引导程序(我不是在提倡MSI工厂,这是一个丑陋的程序。但是,如果你正在开发像我们这样的商业软件,它自带的引导程序是非常值得的许可证成本do)你可以简单地包含脚本来执行这个功能。我们正在使用WiX + MSI Factory引导程序来分发单个压缩的EXE(30Mb)和一个下载MSI的小型1Mb“下载器”EXE。两个EXE都检查是否存在.NET 2.0,然后在必要时下载它。我们还分发了一个独立的MSI,它也检查.NET并阻止安装(如果它不存在)。
基本上你有以下几点:
忽略.NET 1.1,忽略它。 Vista用户及其他用户只会安装它以用于遗留应用程序支持,或者如果他们是开发人员。
.NET 2.0是最常安装的版本,从我们的用户群中我们发现只有不到10%的用户安装了.NET 3.5。如果您的应用程序针对技术性,令人讨厌的受众,那么我会说~50%的人会拥有.NET 3.0。如果您的目标是消费者/零售/非技术市场,那么使用.NET 2.0可能会估计约30%,使用.NET 3.0或更高版本可能会估计10%。
以上数据基于我们网站的浏览器流量,这些网站主要是非技术人员。这可能是了解市场的最佳方式。 IE总是在User-agent字符串中报告.NET版本,因此打破weblog并开始分析:)
答案 4 :(得分:0)
这取决于。在我工作的地方,我们将它作为先决条件包含在安装程序中,因为我们有一些客户可能没有互联网连接来下载运行时。
你可以做的一些事情:
如果我知道我的客户都在线,我会为.NET以及Crystal Reports或SQL Express等任何其他先决条件执行选项3。我安装了包含的内容,安装量超过100MB。 70MB +是先决条件。