views:

852

answers:

12

I'm about to start a new Windows app. It will be an audio processing tool written in C++. It will need all the usual GUI stuff like menus, toolbars etc. It will also have an embedded web browser.

I'm thinking of building it on .NET but I'd like to hear from you all on whether .NET is still a pain to deploy. What percentage of regular users already have the .NET runtime ? I don't want to cause any pain for my users like having to download a 100MB runtime just to launch my app.

What do you stack overflowers think ? Should I go .NET or should I stick to plain 'ol Win32 API ? Or maybe even a 3rd party system like QT or wxWidgets ?

+13  A: 

I don't know exact numbers, but Vista has .NET built in, and other versions of Windows can get it off of Microsoft Update fairly easily. You can also redistribute the .NET runtime with your application.

I wouldn't worry too much about whether your users have .NET installed.

Jesse Weigert
Different versions of .Net can still be an issue. For example, no OS ships with .Net 3.5. If you want to target that, you have to expect your users to install it.
Steve Rowe
" wouldn't worry too much about whether your users have .NET installed"I think it should be an issue !!
Ahmed Said
+22  A: 

You can point your users to the .Net bootstrapper, It's a 100kb download that will detect which bits of the .Net framework they currently have and will download anything missing.

DaRKoN_
+5  A: 

The .Net Framework download/install isn't that onerous. But I would suggest looking at your issue from another angle.

If you knew that all of your users had the Framework installed, would you opt for C++ or would you utilize .Net? Because of your GUI requirements, I would guess you're using .Net for all the niceties that it brings to the table.

The other options you listed may be acceptable, but it's tough to beat the .Net Framework on its support for those client-side components.

All things considered, the trade-off of a single download vs. the better application support you'll get seems like a good one.

jro
+2  A: 

.NET is like Java - you need to insure the appropriate runtime is there. The d/l is not 100mb! HA! It's 196mb. But there is a "client profile" that reduces it to 26mb, so I hear.

Deployment of the .NET runtime is a downside, but for me, productivity of the developer is much improved in C# over C++. I will gladly make my users endure 45 seconds of download time, in order to gain an order of magnitude better productivity. But that's just me. (ps: The required runtime can be auto-downloaded by the installer).

Cheeso
You'll gladly annoy your users! of course, who cares about his users anyway?
hasen j
Exactly! 45 seconds of their time, once, is well worth saving 4 weeks of headaches for me.
Cheeso
Also saving 4 weeks of your worktime out of their wallet
borisCallens
Also saving that download time for other pieces of .Net software out there.
Greg D
There ya go! It's a community service thing.
Cheeso
A: 

Not advice on .Net, but if you decide, for some reason or another, not to use .Net, I'd highly recommend using QT over Win32 API. I find the Win32 API really messy and a lot harder to use than QT, which, in my opinion, is really nice.

DeadHead
+11  A: 

Microsoft is pushing the .NET framework very strongly. I believe that you can't even install Microsoft Office 2007 without having the .NET framework installed on your computer. So if Microsoft is requiring .NET for their latest Office programs, you're probably safe in assuming that your Microsoft-based customers will have the prerequisite .NET foundation libraries installed. Of courses, this will depend greatly on what type of application you're building. I've also heard of some video game developers shipping their games bundle with the open source Mono version of .NET. Believe it or not, there is actually a very strong and stable build of Mono for Microsoft Windows.

ewalk
No - that's a new one on me. Can't install Office 2007 without installing .NET? Never heard of that. There are some pieces of Office that use .NET... I believe the BCM for Outlook 2007 is one. But MSWord and MSExcel don't require it.
Cheeso
+1  A: 

What kind of application are you building? That is really important. If you are worried about your users then:

  • if you control your users then there is no problem - you control their machines and you can make sure that .NET is already installed
  • if you are talking about users that are external (to your organization) then I would recommend either ASP.NET or Silverlight application

Decide for yourself. I would probably go with Silverlight since this is closest to Desktop applications (which I think you are referring to) and still the download is very small (I guess something like 2MB). Take a look at http://silverlight.net.

David Pokluda
I strongly doubt that sound editing would be something you'd want to do in an online application.
borisCallens
*editing = processing
borisCallens
A: 

.Net will make your life easier comparing to native C++ and windows APIs or even QT. But if the GUI is not complex it is better to use QT as the .Net framework size is relatively big

Ahmed Said
+2  A: 

The .NET Framework 2.0 Runtime is only 22MB, and it's a good framework to target, especially if you don't need WPF or WCF. Vista users will have at least 3.0 installed, so they don't need to do anything, and a lot of other applications already target 2.0, so they will have it installed already.

Besides, your application in .NET will be significantly smaller than what you'd write in C++. The executables are a lot smaller in their own regard, and the resulting MSI file from building a Setup project in VS is smaller than anything else I've seen produced.

Dave Van den Eynde
Not when you add the runtime. Taking a system from no .net to 3.5 is a significant download and I have had the install fail on several systems the first time it was done.
bruceatk
That doesn't make my answer any less valid. You don't need 3.5 today unless you need some of the newer technologies. And that the install fails you *your* system may be due to missing prerequisites.
Dave Van den Eynde
I'm commenting on your "The executables are a lot smaller...". I always have to consider the complete payload of what I'm delivering and it's dependencies.
bruceatk
But you're not delivering the .NET Framework. Your customers might not need it. In fact, it's more likely that they don't need it.
Dave Van den Eynde
+2  A: 

We deploy several application to customers in different industries, and currently .NET Framework 2.0 is not a problem at all. (And it's just a 22 MB download anyway.) You can still use Visual Studio 2008 and C#, but you have to choose .NET 2.0 as the target framework and you have to use Windows Forms instead of WPF for the GUI (which might be depending on your experiences,

.NET Framework 3.0 and 3.5 (and 3.5 SP1 etc.) doesn't seem to be mainstream at least in corporate networks; it's significantly larger, has more potential pitfalls during installation, and doesn't support Windows 2000 and Windows 98 anymore (which .NET 2.0 still does).

markus
+1  A: 

For what I've read Mono (the libre software's implementation of .NET) ships with a linker - you could compile your application using Mono, linking to it all needed components.

The good part is you'd get a stand-alone package: no need for end user to install a specific .NET framework if they haven't already. The downside is: depending on how many .NET libraries you're using, your executable may end up being huge, negating the benefits.

Joe Pineda
A: 

The ClickOnce API is also something worth looking into. You can use it to distribute your application over the internet, and the application can call home to get updates automatically (if desired).

I use at my job now and it makes distributing and updating desktop software a breeze.

Jason Miesionczek
This answer doesn't address the concern of whether it's a good idea to write for .NET based on the size of the runtime.
Dave Van den Eynde