Take the 2-minute tour ×
Programmers Stack Exchange is a question and answer site for professional programmers interested in conceptual questions about software development. It's 100% free, no registration required.

Background:

I have a project where I need to provide the user a download package with some sensitive data in it. The data needs to be encrypted. After they download it, they need to be able to view it (no editing required). For this question, let's approximate the data as a series of static html files. Because the data is sensitive, it needs to be encrypted any time it is on disk.

We are thinking of providing the user with a download option that would give them a zip file containing two files:

  • A data file (we'd probably use an encrypted zip file behind the scenes) with the data they asked for
  • An application to view the data that would appropriately prompt for a passphrase and handle decrypting the data and displaying it via an embedded web browser.

Additional details:

  • Users are not under our control. They are consumers.
  • We are not worried about cross platform in this question. This is just about Windows. We will have a separate download for Mac users.

Get to the question already:

For that application we need to create, we're internally debating if it is reasonable for that app to be a .NET winforms application. We want a single .exe, and we want the download to be reasonably small (e.g. 100k).

  • Dare we use the .NET framework (we don't need to use a particularly recent version of .NET--2.0 would be fine)?
  • Is it reasonable to assume that most consumers have .NET on their machines now due to Windows Update?
  • Is it reasonable to ask the ones that don't have it to install it?

We know that 100% of users will not have .NET. The real question is if it is reasonable to ask them to have it in this day and age.

P.S. Does anyone know of any reliable statistics of what percentage of people actually do have .NET installed already?

share|improve this question
    
Keep in mind .NET needs to be both installed and not corrupted/missing files. –  GrandmasterB Oct 5 '10 at 20:28
    
Don;t forget to handle users who are on other operating systems besides Windows, woudl they have .net? –  HLGEM Oct 5 '10 at 20:29
    
@HLGEM, as mentioned, we will have a separate download for Mac users that contains a similar Mac-native client. Linux users just won't be able to use this optional support for offline data access and will have to just view the data online in their web browser. –  Erv Walter Oct 5 '10 at 20:34
    
What about Macs? –  JeffO Oct 5 '10 at 20:35
    
Missed seeing that part. –  HLGEM Oct 5 '10 at 20:58

10 Answers 10

By default, Windows XP doesn't include any version of the .NET framework. Vista, and Server 2008 include .NET Framework 3.0, Windows 7 and Server 2008R2 include .NET 3.5, and Windows 2000 can't support anything above .NET 2.0.

With that in mind, it comes down to the OS spread in your target audience. I would list the requirement prominently on the download page and provide a link to Microsoft Update/Downloads section for the framework download, in addition to your application download.

share|improve this answer

I don't know if it's reasonable to ask them to have it or not. However, I do know that customers are often unreasonable, so I don't see that it matters. If you're dealing with a limited number of customers, ask them. If you're dealing with more customers than you can reasonably talk to, or you're going to pick up customers over time, just make sure they see the requirement before buying.

share|improve this answer

What version of Windows are your users on?

If it's Windows Vista they'll have .NET 3 installed by default and if it's Windows 7 they'll have version 3.5. Source.

That doesn't help if they're on XP, but as Microsoft have just stopped support for SP2 they should be on SP3.

If you use something like "ClickOnce" (there are other installers available) you can make the relevant version of the .NET framework a prerequisite and it will download and install it for you - it's not included in your installer. If you are worried about the size of the download you could go to .NET 3.5 or 4 and make the Client Profile which is a much smaller download, though the .NET 4 version is more flexible.

share|improve this answer
    
Anyone in the general public might be a user. I would expect we will have some folks still on XP. –  Erv Walter Oct 5 '10 at 20:21

A while back I read some posts from Paint.NET on the install process, and how to improve it. Have a look at these two blog entries. The first describes the awkwardness of installing the .NET Framework separately; the second describes how the author integrated it as part of the install.

The Paint.NET install experience — Part 1, version 3.xx (the old bad way)
The Paint.NET install experience — Part 2, version 4.0 (the new good way)

So even if you're going to require the .NET Framework, and you're not sure whether the users will have it, you can at least integrate its installation with your app in a reasonably painless way.

share|improve this answer

Many corporate users are not on the latest version of Windows (Still on XP), but I think more home users have upgraded because of new hardware. Downloading and installing is a little bit of a pain. Is this file usually a one-time thing per client or will they continue to get files in the future?

What are your other options? Are password protected Acrobat files enough? It would be a lot easier to block: saving, printing, and copy and pasting.

Seems like you're reinventing the wheel, but I don't have all the specifics.

share|improve this answer
    
Encrypted PDFs might be a workable solution, and I think it is more reasonable to assume acrobat reader (at least on Windows). We are trying to avoid reinventing the wheel :) The ideal solution would just be an encrypted zip file, but Windows does not support decrypting zip files that use AES encryption and assuming people have WinZip is much more unlikely than .NET I think. –  Erv Walter Oct 5 '10 at 20:17
    
P.S. It is largely home users and they will get updated files periodically (i.e. not just one-time download). –  Erv Walter Oct 5 '10 at 20:19
    
I think a .NET solution would work. Users would have Acrobat, but I don't know if there are licensing issues on your end to create the encryted files. –  JeffO Oct 5 '10 at 20:32

I did some research on the subject by tracking data on over 10000 installations accross the world for a desktop application targeting the .Net Framework 3.5 sp1. Only a bunch (about 10) did not have the proper framework installed. I removed the heavy .net framework installation file from the installer, and did not notice any problem yet.

I highly suggest you to conduct the same study in your market and decide based on the results rather than on answers you could get on communities like this one.

share|improve this answer
    
Or probably people that don't have a .NET already installed never bothered with your program. You may be limiting your own user base, especially for new users, who are not upgrading from a previous version of your program. –  Lie Ryan Oct 6 '10 at 9:32
    
Lie, that's exactly why you need to conduct your OWN studies. My customer base is probably a lot different that yours. Online stats will not help you either. –  user2567 Oct 6 '10 at 9:37
    
No, what I meant is if you conduct a study on your own costumer base, either they were upgrading (in which case, they already have .NET) or they're new users (in which case, they have already learned about your program's requirement). Either way, studying your own costumer base is very likely to be skewed towards having .NET. Many potential new users is likely to be turned off when they read your program required .NET, and looks for another solution. You are limiting your own new customers base, if you base your decision on that. –  Lie Ryan Oct 6 '10 at 9:48
    
The 10.000 are only new users that did not knew anything about requirements (they are not published, just a download link to an executable). –  user2567 Oct 6 '10 at 9:53

Depends on your demographics...

If I wanted anyone[1] to be able to use it, I would finangle up a 32-bit app that would run on Win98 and W7.

That probably means C++/MFC stuff.

[1] Anyone with a machine younger than 12 years old that has an internet connection that is running Windows 98+.

share|improve this answer
    
So "anyone" doesn't include non-Windows users? -feels sad that I am nobody- –  alternative Oct 5 '10 at 22:43
    
@mathepic - the questioner has already clearly stated that this question concerns the Windows distribution, and that there are separate Mac and Linux distributions that he is not asking about in this question. –  Carson63000 Oct 5 '10 at 23:30
1  
Or Delphi/VCL stuff - but use an older version. C/C++ isn't the only native language for Windows. Or even VB6 (sorry to swear). –  Gerry Oct 6 '10 at 3:37
    
@Gerry: True. :) I just hadn't heard Delphi bandied about much in the last 8 years so I'm not used to thinking of. –  Paul Nathan Oct 6 '10 at 4:00
    
Indeed. I've worked with it for 12 years, and am finding it hard to find permanent employment, which is a pity as it has seen many enhancements (full Unicode, generics, anonymous methods (closures)) in the past couple of years, –  Gerry Oct 6 '10 at 4:05

.net 4 is now part of windows update (the KB was issued in July 2010). As long as the machine is current on thier windows-updates then you are pretty much guaranteed they have .net 4

share|improve this answer

If you know, that 100% of your customers don't have it, why did you code the application with .net?

You could have use Java and create a Web-Start Application.

But in fact, you can bundle the .net framework with the installer. If the Customer trust you to install your Application, he will install .net, too.

share|improve this answer
6  
A Java web start application would require Java which is just as bad as requiring .NET. And we can't include .NET in the installer, that would make the download too large. As mentioned, we are looking for a small download (i.e. 100k or less). –  Erv Walter Oct 5 '10 at 20:16
    
Java web start application is slow too! –  D. L. Oct 5 '10 at 20:18
    
You did not write about the 100K download-size. –  ckuetbach Oct 5 '10 at 20:21
    
Sorry about that not being more explicit (I will edit), but it was implied by, "and we want the download to be reasonably small." –  Erv Walter Oct 5 '10 at 20:23

Just make sure that the package you ship contains a dependency on the required version of the framework. Then the package manager the user has will pull the necessary framework version and install it before your package.

Oh, the operating system you target has a very crippled package management system, which can't do this? It should be a bad OS then. Well, then you have only one option: require this framework installed and provide the link for user to do it. I don't see how users benefit, if a noticeable part of what developers do is devoted to useless compatibility with "standard" OS tools (this time could be spent for fixing bugs and adding features instead).

share|improve this answer
    
As much as I see how this (somewhat-truthful) answer could be seen as FUD, I don't see anyone explaining downvotes... –  alternative Oct 5 '10 at 22:44
7  
Explanation of my downvote: Pavel offered absolutely nothing helpful in response to the question, just took the opportunity to bash Windows. –  Carson63000 Oct 5 '10 at 23:31
    
Even better, use a language that doesn't require a huge pool of libraries to produce anything worth while, e.g Delphi on Windows ;) –  Gerry Oct 6 '10 at 3:40
1  
@Gerry, the whole point is that developers want to use a language they know and find productive, which would boost their development speed, and allow to reuse the effort put into these libraries. –  Pavel Shved Oct 6 '10 at 4:09
    
In the Delphi world libraries (commercial and Open Source) are normally only installed on the development machines - everything (other than OS and occasional third party provided DLLs) is compiled into a single exe. But sometimes OSS-C libraries are wrapped in DLLs to call from Delphi –  Gerry Oct 6 '10 at 7:57

Your Answer

 
discard

By posting your answer, you agree to the privacy policy and terms of service.

Not the answer you're looking for? Browse other questions tagged or ask your own question.