我即将开始一个新的Windows应用程序。它将是一个用C ++编写的音频处理工具。它将需要所有常见的GUI内容,如菜单,工具栏等。它还将具有嵌入式Web浏览器。
我正在考虑在.NET上构建它,但我想听听你们所有关于.NET是否仍然很难部署的消息。有多少百分比的常规用户已经拥有.NET运行时?我不想为我的用户带来任何痛苦,比如只需要下载100MB运行时来启动我的应用程序。
你有什么堆叠溢出者的想法?我应该去.NET还是应该坚持使用简单的'ol Win32 API?或者甚至可能是第三方系统,如QT或wxWidgets?
答案 0 :(得分:22)
您可以将用户指向.Net bootstrapper,这是一个100kb的下载,它将检测他们当前拥有的.Net框架的哪些位,并将下载任何丢失的内容。
@shanselman还有http://smallestdotnet.com/倡议
答案 1 :(得分:13)
我不知道确切的数字,但是Vista内置了.NET,其他版本的Windows可以很容易地将它从Microsoft Update中删除。您还可以使用您的应用程序重新分发.NET运行时。
我不会太担心您的用户是否安装了.NET。
答案 2 :(得分:11)
微软强烈推动.NET框架非常。我相信如果没有在您的计算机上安装.NET框架,您甚至无法安装Microsoft Office 2007。因此,如果Microsoft要求.NET用于其最新的Office程序,那么您可以安全地假设您的基于Microsoft的客户将安装必备的.NET基础库。在课程中,这在很大程度上取决于您正在构建的应用程序类型。我也听说过一些视频游戏开发者用他们的开源Mono版本的.NET发布他们的游戏包。信不信由你,微软Windows实际上有一个非常强大而稳定的Mono版本。
答案 3 :(得分:5)
.Net Framework下载/安装不是 繁琐。但我建议从另一个角度来看你的问题。
如果您知道所有用户都安装了Framework,您会选择C ++还是使用.Net?由于您的GUI要求,我猜您正在使用.Net来获取它带来的所有细节。
您列出的其他选项可能是可以接受的,但是很难在.Net Framework上支持这些客户端组件。
考虑到所有因素,单次下载与更好的应用程序支持的权衡似乎是一个很好的。
答案 4 :(得分:2)
.NET就像Java一样 - 您需要确保适当的运行时存在。 d / l不是100mb!哈!这是196mb。但是有一个“客户档案”将它减少到26mb,所以我听到了。
部署.NET运行时是一个缺点,但对我来说,开发人员的生产力在C#中比C ++大大提高。我很乐意让我的用户忍受45秒的下载时间,以便获得更高的生产力。但那只是我。 (ps:安装程序可以自动下载所需的运行时)。
答案 5 :(得分:2)
.NET Framework 2.0 Runtime只有22MB,它是一个很好的目标框架,特别是如果你不需要WPF或WCF。 Vista用户将安装至少3.0,因此他们不需要做任何事情,并且许多其他应用程序已经定位2.0,因此他们已经安装了它。
此外,您在.NET中的应用程序将远远小于您在C ++中编写的应用程序。可执行文件在它们自身方面要小得多,并且在VS中构建安装项目所得到的MSI文件比我见过的任何其他文件都要小。
答案 6 :(得分:2)
我们将多个应用程序部署到不同行业的客户,目前.NET Framework 2.0根本不是问题。 (而且它只是一个22 MB的下载。)你仍然可以使用Visual Studio 2008和C#,但你必须选择.NET 2.0作为目标框架,你必须使用Windows Forms而不是WPF作为GUI(可能是根据您的经验,
.NET Framework 3.0和3.5(以及3.5 SP1等)至少在企业网络中似乎并不是主流;它显着更大,在安装过程中有更多的潜在缺陷,并且不再支持Windows 2000和Windows 98(.NET 2.0仍然支持)。
答案 7 :(得分:1)
您正在构建什么样的应用程序?这非常重要。如果您担心用户,那么:
自己决定。我可能会选择Silverlight,因为它最接近桌面应用程序(我认为你指的是),而且下载量仍然很小(我觉得像2MB)。看看http://silverlight.net。
答案 8 :(得分:1)
对于我所读过的Mono(libre软件的.NET实现)附带链接器 - 您可以使用Mono编译应用程序,并将其链接到所有需要的组件。
好的部分是你将获得一个独立的软件包:如果尚未安装特定的.NET框架,则无需最终用户。缺点是:根据您使用的.NET库数量,您的可执行文件最终可能会巨大,从而无法获益。
答案 9 :(得分:0)
不是关于.Net的建议,但如果您出于某种原因决定不使用.Net,我强烈建议您使用QT而不是Win32 API。我发现Win32 API非常混乱,而且比QT更难使用,在我看来,这非常好。
答案 10 :(得分:0)
答案 11 :(得分:0)
ClickOnce API也值得研究。您可以使用它通过互联网分发您的应用程序,应用程序可以调用home来自动获取更新(如果需要)。
我现在在工作中使用它,这使得分发和更新桌面软件变得轻而易举。