tags:

views:

251

answers:

9

Hi

I need to create a very simple GUI application for Windows(open a file, do some changes based on user input, upload the file to an intranet server). The client company has the latest release versions of Java SE, .NET and Adobe AIR installed on all their machines. And their #1 requirement is to have the smallest possible package for xcopy deployment. So which of the 3 listed platforms should I use? Another option of course is a native exe.

Thanks, Andrew

EDIT: Thanks for all answers, guys! The customer has offices in New Zealand and Australia, from what I've heard the connectivity there is very expensive and lacking. And the size requirement came from their IT operations department, which have refused to install custom apps in the past as too big for the features... I'm looking for a modern platform to develop the app in, C++ at least ;) So I'd change the question to which of the following platform will have minimal executable file size: MS VC++ 2010, .NET 4.0 or earlier, Java 1.6 or earlier, Adobe AIR 1.6 or earlier.

+1  A: 

I have seen some windows GUI apps written in pure assembly. You would be surprised how much functionality you can fit into 10k.

Under no circumstances would I recommend assembly language, but it the only way to fulfill such a strict requirement of "smallest possible".

mikerobi
yes the demoscene in particular produces some crazy stuff.
Alexandre Jasmin
You can also do fairly well in pure C if you mess around with the compiler settings and run it through upx. Probably around the 6kb mark.
Yacoby
A: 

Hand written assembly ;-)

But for maintainability I would go with either .NET, or a native exe written in delphi/c++ with manual windows API calls.

Davy Landman
A: 

What's the point ? Whichever technology you choose, the executable file won't be more than a few kilobytes (not including resources such as images). Nowadays, hard drives have gigabytes of storage and Internet connections can transfer several megabytes per second. You could worry about a big app (say, more than 50 or 100 MB), but in your case it just doesn't make sense...

Thomas Levesque
perhaps his customers have ISDN connectivity? but a very strange constrained in the current time..
Davy Landman
even with ISDN, even a few dozen KB won't take more than a few seconds to transfer...
Thomas Levesque
It is an explicit requirement - that is good enough for me.
Thorbjørn Ravn Andersen
Perhaps, but many requirements are just wrong... if the app is as simple as the OP says it is, the difference will never be more than a few KB, and even a with a poor connection it's a ridiculously amount of data to transfer. We're not using floppies and 9600 bps modems anymore... But I expected the downvote anyway ;)
Thomas Levesque
+1  A: 

As stated at Tiny PE is several bytes only but do you really need such a small application? Does several kilobytes makes much difference?

Giorgi
A: 

I would use .Net because your target OS is Windows and .Net ships with it. As to decide what platform will generate the smallest app on disk I have no idea. However, I am sure that all three APIs will generate an application millions of times smaller than the sum of all these platforms.

Why is this size requirement? Give us more details ... maybe there is an other way to make your customer happy!

Basbrun
A: 

Delphi or .NET (WinForms with C#) are probably the best for this. Delphi will produce native executables that don't require any external dependencies, but since the enviroments already have .NET, it fits the bill too.

Jon Benedicto
+2  A: 

And their #1 requirement is to have the smallest possible package for xcopy deployment.

If you take this requirement literally, it is almost impossible to meet. If your program could be pruned by just one byte, then it does not satisfy the requirement.

If I were you, I'd ask for clarification:

  • Can they give you a concrete measure for the required size? I.e. how small is small enough?

  • If not, can they tell you how they will judge that your program meets their #1 requirement?

  • If not, renegotiate the contract as "time and materials" ... because you currently have no control over how much effort it will take!

Stephen C
A: 

Thought about a silverlight out of browser application? They are pretty small.

Keltex
A: 

Use VC++ to create a native application, then compress it using an executable file compressor.

Marcus Adams