.Net packaging/wrapper application?

C

Cor Ligthert[MVP]

Jim,
"It turns out that as few as 28 percent of American households today have
access to broadband Internet.

I assume that you mean the USA households, however beside that is probably
in those 28% the people that are interested in applications. Those who only
use Interent to browse or to send mail don't need small packages, they
simply don't download.

By the way, this is are International newsgroups, this situation in the USA
does not really interest most of us. (Although I don't believe that this
figur is representative for areas as LA, NY, etc.)

Cor
 
C

Chris Shepherd

jim said:
I am looking for an application that will wrap my .Net application (and any
needed .Net parts) into a single exe.

I know of Thinstall ($4,000 for application and per copy fees for your exes)
and of Xenocode (~$1,500 plus ~ $12 per copy of your exe). But, I'd like
something that is actually affordable for a hobbyist programmer.

This capability (Thinstall's being able to wrap a .Net app and ship it as a
single exe) would be a FANTASTIC addition to the .Net application suite. It
would simplify the shipping & installation and not even require the end user
to have .Net installed or to install the application. It also avoids DLL
and .Net Version Hell.

While there may be uses for it, I don't really see how bloating your app
by almost double the size to run it in a single EXE is of any practical
use to the majority of .NET developers. If you look at Xenocode's
example for Firefox, their "run-once EXE" is over 10 meg in size, while
the Firefox installer for the same version (2.0.11) is 5.7 meg in size.

You discuss people who aren't downloading the 25MB framework package due
to lack of broadband internet access, but I see no "try it" demos of any
..NET apps on either site. I'd be very interested in seeing what the size
of a .NET app actually is (they could do Paint.NET, it's free). Is it
actually any smaller than your compiled app + .Net framework compressed
would be?

As for why it wouldn't get done, I think it's of too limited practical
use. It might be handy, but honestly I can't really see a situation
where I would want to seriously put it to use.

Chris.
 
C

Chris Mullins [MVP - C#]

We've used RemoteSoft for some time with a fair bit of success. We've also
played with Xenocode a bit.

Of the two, Xenocode seems the better product at this point - it's had fewer
strange problems.

I would have sworn Xenocode didn't have royalties associated with it, but a
quick look through their web site reveals the dark truth - they do! That
really does suck.
 
J

jim

Chris,

At least Salamander doesn't have royalties associated with it.

I have contacted a company about producing similar software to Thinstall for
me to make available to hobbyist programmers with no royalties. So far,
they've said it will cost $2,000 to study the project and give me a price
and time estimates.

I'm considering it.

jim
 
C

Chris Mullins [MVP - C#]

Tom Shelton said:
But, to be honest, I see them as
having very limited usefulness. In fact, other then running directly
off of media (such as usb key or cd/dvd - like an autorun.exe), I
don't really see any need at all.

I couldn't disagree more strongly. Anyone planning on building a widely
deployed .Net application needs to be doing this.

The lack of broad installation support for the .Net framework makes this a
must. In relative terms, nobody has the framework installed. Installation of
the framework requires Admin rights and a reboot.

.... this means if you install the Framework for them, via a bootstrapper or
something similar, the user has a piss-poor opinion of your software before
they've even run a line of your code.

It's very sad that ".Net on the Desktop" isn't a reality. Unfortuantly, the
reality is that MS hasn't pushed it out via Windows update, and doesn't
install it as part of Office, IE, or any other widespread product that I
know of.

.... I've lost alot of sleep over this exact problem, and it's a hot button
for me.
 
P

Peter Duniho

Wow! A little reading goes a long way people.

I agree!

Here's some reading that I think would help you:

http://www.google.com/Top/Computers/Usenet/Etiquette/

Especially those links that lead to:
http://www.cs.tut.fi/~jkorpela/usenet/xpost.html
http://www.faqs.org/faqs/usenet/primer/part1/
http://infohost.nmt.edu/tcc/help/news/idiot.html

Paying close attention to the sections specific to cross-posting.

Frankly, not even counting your rude behavior toward people who are just
trying to help, the lack of focus in this thread is a great example of why
it's such a bad idea to post to so many broadly unrelated newsgroups.

If you want specific, relevant advice, stick to posting to specific,
relevant newsgroups. If you can't do that, don't complain when the advice
you get doesn't seem specific or relevant enough for your tastes.

Pete
 
J

jim

Chris Shepherd said:
While there may be uses for it, I don't really see how bloating your app
by almost double the size to run it in a single EXE is of any practical
use to the majority of .NET developers. If you look at Xenocode's example
for Firefox, their "run-once EXE" is over 10 meg in size, while the
Firefox installer for the same version (2.0.11) is 5.7 meg in size.

The major reasons for using this type of application are (1) to end DLL/.Net
version hell, (2) to not make the end user have to install version 1.0, 1.1,
2.0, 3.0 & 3.5 of the .Net framework to run .Net apps, (3) to insulate your
app from decompiling as is easy to do even with most obfuscation, (4) to
allow more users to run your app because Thinstall apps do not require admin
permissions to run whereas admin permission is required to do most app
installations and (5) people like easy - easy sells - and nothing could be
easier than copying an exe and running it.
You discuss people who aren't downloading the 25MB framework package due
to lack of broadband internet access, but I see no "try it" demos of any
.NET apps on either site. I'd be very interested in seeing what the size
of a .NET app actually is (they could do Paint.NET, it's free). Is it
actually any smaller than your compiled app + .Net framework compressed
would be?

Actually it was smaller the last time we tested Thinstall. I will try and
test it again and get you Paint .Net to try for yourself.

As a simple test, we made a "hello world" windows form and compiled it to
6MB. That beat the 24+MB download of the .Net framework alone.
As for why it wouldn't get done, I think it's of too limited practical
use. It might be handy, but honestly I can't really see a situation where
I would want to seriously put it to use.

How about in distributing portable applications for use on USB drives? Or
distributing apps to people that may not have admin permissions to install
applications? Or simply making an application as simple as copying the exe
and running it?

It isn't for everybody.....but I think it improves the distribution and
maintenance of .Net apps for most people.

jim
 
J

jim

Chirs,

You're right. It seems to take a little more work than Thinstall, but for
the no royalties part I can stand the extra work.

I was looking at their Virtualization tools.

Thanks for pointing out PostBuild! That's something I can swing.

jim
 
J

jim

Chris,

I fully agree with you there.

If Microsoft is puttting all of its eggs in the .Net basket, why isn't .Net
(a) included with every Microsoft product and (b) made a top priority
download for the nightly updates done by most end users?

If it was so distributed by MS, the distribution costs for .Net apps woudl
be minimal and there would be a lot more of them out there.

Doesn't make a lot of sense to me.

jim
 
C

Chris Shepherd

jim said:
The major reasons for using this type of application are (1) to end DLL/.Net
version hell, (2) to not make the end user have to install version 1.0, 1.1,
2.0, 3.0 & 3.5 of the .Net framework to run .Net apps, (3) to insulate your
app from decompiling as is easy to do even with most obfuscation, (4) to
allow more users to run your app because Thinstall apps do not require admin
permissions to run whereas admin permission is required to do most app
installations and (5) people like easy - easy sells - and nothing could be
easier than copying an exe and running it.

Well 1, DLL/.Net version hell has not been really an issue for a while
now -- at least speaking from my own experiences.

2, You don't need to install all those versions of the framework. If a
user has any kind of recent OS installation (XP SP2 or higher) they
already have a framework installed. At most you need 2.0/3.0/3.5. It's
only problematic in not up to date OSes, and if you are targeting old
PCs you probably shouldn't be writing stuff in .NET anyway.

3, If it can run, it can be decompiled/disassembled. Obfuscation isn't
as great a solution as many people make it out to be. I understand in
protecting your investment, but there's a line between deterring lazy
people and making your code useless/slow because of the obfuscation
techniques.

4, Installing an application does not require administrator privileges
in any way. Installing an application which needs to access certain
parts of the filesystem or registry may require installation privileges,
which are available to Power Users. Using this and #5 as a point *for*
Thinstall and its ilk seems odd, since most commercial software nowadays
installs.

5, Yes, it may make running the software easy, but how trivial is
updating the software, keeping track of (and securing) temporary data
caches, etc., etc..?
Actually it was smaller the last time we tested Thinstall. I will try and
test it again and get you Paint .Net to try for yourself.

Smaller than what?
As a simple test, we made a "hello world" windows form and compiled it to
6MB. That beat the 24+MB download of the .Net framework alone.

And what was the size of your hello world EXE plus the framework
compressed into one file?
This is of course running with you and ignoring the fact that as we go
forward the OSes will/already have the framework already installed, and
many already do thanks to Service Packs/Vista.
How about in distributing portable applications for use on USB drives? Or
distributing apps to people that may not have admin permissions to install
applications? Or simply making an application as simple as copying the exe
and running it?

The PortableApps guys (http://portableapps.com) have done this just fine
using installations.
It isn't for everybody.....but I think it improves the distribution and
maintenance of .Net apps for most people.

Distribution and ease of access, maybe, but I don't see how it improves
maintenance at all.

Chris.
 
J

jim

Tom Shelton said:
Jim - I know of nothing like these products that isn't expensive... I
have read through this thread - so I am familiar with why you think
this would be a desirable product. But, to be honest, I see them as
having very limited usefulness. In fact, other then running directly
off of media (such as usb key or cd/dvd - like an autorun.exe), I
don't really see any need at all.

1) I'm not sure that I agree with your estimates of broadband
penetration:

http://blogs.zdnet.com/ITFacts/?p=10400 (March 2006)
"February saw broadband composition reach an all-time high of 68%,
increasing an impressive 13% over the previous February."

I even found some that say as much as 85%. I know very few people
still on dial-up. In fact, other then my Mother I can't think of any
one I know personally :)

Then there are sites like http://www.websiteoptimization.com/bw/0704/ that
show (as of December 2006) that show only 50.7% penetration.

I can't seem to find any more current figures. I think that may be by
design. The telcos had rather just say "trust us" than reveal the facts of
how we, as a nation, are falling farther and farther behind in broadband
tchnology and distribution. It's shameful.
2) DLL/Version hell? Hmmm, not so much. I mean, I'm not saying that
this is 100% eliminated - I have personally experienced this with sp1
to 1.1, but it's rare enough that it's just not that much of a
concern.

It's a huge concern for Microsoft. That's why they require you to call in
to get the hotfixes for .Net instead of simply downloading them (or at least
thats the best reason I could come up with for that ridiculous behavior).
My guess is that if you were to take a poll - not many .NET developers
work in a space were this sort of application is really useful.

I would agree with you there. Distribution and maintenance (not to mention
coding) .Net applications is so much more difficult than apss were in
something like VB6, and the performance so much worse from a user
standpoint, that there are only a fraction of the hobbyist programmers that
there used to be that actually put out code for the masses.
It
does nothing for web-developers. It does nothing for the guy working
on the in-house system,

Not true. It greatly simplifies distribution (even eliminating distribution
in the case of streaming Thinstall apps from a central server).
verticle market application, or bespoke
systems. In all of those cases, your usually dealing with managed
networks and can dictate minimum system requirements. So, click-once,
xcopy deployment, or a basic windows installer project are usually
sufficient for their needs.

True. They can dictate the environment. But, why would they want to
install .Net 1.0, 1.1, 2.0, 3.0, 3.5, and so on ad nauseum when they coudl
simply distribute (or stream) apps from a central server and skip the whole
..Net install? I don't know of one in-house shop that would balk at the idea
of lessening the admins' workload.
About the only area I could see this
being useful is the developer targeting more of a mass market
horizontal application - and in that case I have to ask, why are you
using .NET (as a side note, I ask the same thing about VB.CLASSIC)?

What else would you suggest (seeing as how Microsoft pushes it for their OS
and they supposedly will make the .Net framework play nice with the upcoming
OSs)?
And even if you are using it - then it's no big deal to bootstrap and
install the framework as needed (bandwidth issues aside :).
Exactly.

So, basically I think that - while these apps are cool - they are
really a niche sort of thing (which explains why they are so
expensive). And, will most likely remain so - just as they have for
the Java and VB.CLASSIC markets.

I, repsectfully, disagree. I think they remain niche apps because of the
pricing, just as Ferraris occupy niche markets because they are so
expensive.

This pricing is by design. I bought Thinstall back when it was only $750.
I emailed the owner, Jonathan Clark, quite regularly and discussed his price
increase at length with him in emails and on the phone. I do not disagree
with his reasoning for the price increase, and will not discuss it here (as
it was a private conversation with sensitive matters being discussed). But,
I do think that the same thing can be done as an add-in for .Net or as a
stand alone app for far less money than is being charged.
Anyway, just some random thoughts ;)

And, I thank you for them.

jim
 
J

jim

Chris Shepherd said:
Well 1, DLL/.Net version hell has not been really an issue for a while
now -- at least speaking from my own experiences.

It really never was an issue - more of an excuse to go to .Net. The simple
fact was that DLL Hell was curable by simply placing all of your apps DLLs
in the same dir as the exe. But, with Thinstall or Postbuild you don't even
have to do that.
2, You don't need to install all those versions of the framework. If a
user has any kind of recent OS installation (XP SP2 or higher) they
already have a framework installed.

Really? When did that start? I am not aware of the framework being
installed as a security update or as a part of SP2? That's been one of my
pet peeves - why wasn't it?
At most you need 2.0/3.0/3.5.

Unless you or your company wrote 1.0 or 1.1 apps.
It's only problematic in not up to date OSes, and if you are targeting old
PCs you probably shouldn't be writing stuff in .NET anyway.

Sound logic.....people with older PCs should just get the hell off the
internet. I like that! (But I wonder what they would think about it.
Hmmmm.... )
3, If it can run, it can be decompiled/disassembled. Obfuscation isn't as
great a solution as many people make it out to be. I understand in
protecting your investment, but there's a line between deterring lazy
people and making your code useless/slow because of the obfuscation
techniques.

Right. It's just that Thinstall/Xenocode make it more difficult than
obfuscation alone.
4, Installing an application does not require administrator privileges in
any way. Installing an application which needs to access certain parts of
the filesystem or registry may require installation privileges, which are
available to Power Users.

Most useful applications write some data to the registry and do manipulate
files (although not necc system files). I have rarely found programs useful
that are so simple as to not use the system registry or manipulate files on
my systems.
Using this and #5 as a point *for* Thinstall and its ilk seems odd, since
most commercial software nowadays installs.

I guess that depends on your Windows permissions and network admin's anal
tension.
5, Yes, it may make running the software easy, but how trivial is updating
the software, keeping track of (and securing) temporary data caches, etc.,
etc..?

You don't work with the general public, do you?
Smaller than what?

Than Paint .Net + the .Net framework.
And what was the size of your hello world EXE plus the framework
compressed into one file?

Just over 24MB. (The .Net install is already compressed.)
This is of course running with you and ignoring the fact that as we go
forward the OSes will/already have the framework already installed, and
many already do thanks to Service Packs/Vista.

You'd think so, wouldn't you. But, so far the only OS I have seen it come
on is 2003 (maybe Vista - I shun Vista so I wouldn't know). I have yet to
see the SP that installs .Net. Did I miss it when it installed?
The PortableApps guys (http://portableapps.com) have done this just fine
using installations.

From their site....

"Step 3: The Analysis
The next step is to determine what needs to be altered to make a program
portable. Does it store its settings in the registry? Does it store them
within Documents and Settings? Does it use an INI file? Can any of these be
changed with commandline parameters (eg: --config X:\appdata)? You'll need
to find this out to determine what you'll need to do to make the app
portable."

Now, I haven't tried to make a portable app in some time, but when I did,
they basically required you to change your app to fit into the portable app
scheme. Thinstall\Postbuild do not.
Distribution and ease of access, maybe, but I don't see how it improves
maintenance at all.

Streaming and replacing or updating single EXEs on a streaming server or on
each desktop is infinitely easier than running updates (or, God forbid,
uninstalls & re-installs) on each desktop.

I currently care for 18 small businesses and 300+ PC users, and I'll take
the short road every time, if the users get the same end result.

jim
 
C

Chris Mullins [MVP - C#]

Chris Shepherd said:
2, You don't need to install all those versions of the framework. If a
user has any kind of recent OS installation (XP SP2 or higher) they
already have a framework installed.

If only that were true. Unforunatly, it's not.

Windows XP SP2 doesn't install any versions of the .Net Framework by
default. Nor is it installed via Windows Update by default.

The only desktop Microsoft O/S that has .Net on it is Vista - that comes
with .Net 3.0.
4, Installing an application does not require administrator privileges in
any way.

Installing a .Net app requires installing the .Net framework. This
installation requires Admin rights, and a machine reboot. This means I've
got cranky users before they have even seen my application.

In the classic coffee-house scenario, on a slow wireless, the .Net framework
installion takes - I kid you not - over an hour. This means any positive
viral impact your cool little app has is long gone, replaced by a negative
viral "that app sucks".

For building desktop apps, Delphi or Adobe Air currently seem the best way
to go.
 
C

Chris Mullins [MVP - C#]

But, personally, I would never
choose .NET for a horizontal, mass distributed application. That
would have to be something more standalone - like C++, Delphi, or
maybe PowerBasic (personally, I'd probably choose C++).

I agree. Completly.
Nobody? Really. Do you have stats on that.

In relative terms, very few people do (I don't have numbers, or I would
provide them). It's not installed by default with any O/S or major product,
nor is it pushed by Windows Update.

To have it installed the user either had to manually install it (via an
optional Windows Update), or be running a program that's already installed
it. Both are unlikley scenarios in the general case. Especially for the
non-tech savy users, that small "cute" apps typically target.
Why? Because you install a dependency? Please.

Because, the installation process for .Net sometimes takes over an hour. It
also frequently fails to install at all. In the coffee-house scenario, where
users are trying to download and install your app via the free wireless,
it's not usable.

Also, for some reason I don't understand, .Net is signifigantly slower to
install via a bootstrapper than via the stand-alone MSI.

The end result is a bunch of people who were willing to install the app now
think it sucks. They don't know it was the .Net framework that had issues,
they just know they tried to install SoapBox, it took an hour, and ultimatly
failed. This makes up look bad, and our software takes 100% of the blame.
They have pushed via windows update - but as an optional update.

Optional updates don't really do anyone any good. I would love to see the MS
numbers on the this. I would really like to see the reason behind why they
havnen't pushed it wider. I suspect it's due to the high failure rate on
install - especially for the .Net 3.0 stuff.
If it's a problem for you, then I respectfully have to say your using
the wrong toolset.

I agree with you. It's sad, but .Net isn't a suitable toolset for building
widely deployed desktop applications.

The problem for me was a failure to check my/our assumptions. We assumed the
..Net Framework was widely deployed - via Office / Windows update / IE7 / XP
SP2. This turned out to be incorrect, and has caused much pain. Nobody to
blame there by oursleves for such a poor assumption.
 
C

Chris Shepherd

jim said:
It really never was an issue - more of an excuse to go to .Net. The simple
fact was that DLL Hell was curable by simply placing all of your apps DLLs
in the same dir as the exe. But, with Thinstall or Postbuild you don't even
have to do that.

Yes. I'm reminded of an episode of the American version of the Office
where they have a "Run for the Cure" for rabies (an already curable
ailment).
Really? When did that start? I am not aware of the framework being
installed as a security update or as a part of SP2? That's been one of my
pet peeves - why wasn't it?

I must be mistaken about XP, but I know Vista has the framework installed.
Unless you or your company wrote 1.0 or 1.1 apps.

Yes, then you only need 1.0/1.1.
Sound logic.....people with older PCs should just get the hell off the
internet. I like that! (But I wonder what they would think about it.
Hmmmm.... )

What I said and your response are vastly different. I simply suggested
you should use a different language for development if your target
environment has little to no support for recent updates/the .NET
framework. My onus was on the developer, not on the user.
Right. It's just that Thinstall/Xenocode make it more difficult than
obfuscation alone.

Either way, it still runs on X86, and therefore must decode to
instructions for those processors.
Most useful applications write some data to the registry and do manipulate
files (although not necc system files). I have rarely found programs useful
that are so simple as to not use the system registry or manipulate files on
my systems.

Note the *certain parts* in the point you replied to. Anyone can write
files to the system, there's a specific spot for it for each user in
fact. It's more *where* you can write files to that are controlled by
security.
I guess that depends on your Windows permissions and network admin's anal
tension.

Yes, but trying to get around restrictive administrative policies such
as not installing software is probably a breach of the AUP of the
organization you work for. Most AUPs I've read/written include copying
files which do not alter the windows registry or install to a permanent
location as "installation".

If your counterpoint is that YMMV, well no duh.
You don't work with the general public, do you?

Which is exactly my point. This is why the majority of software comes in
installable form and maintains itself by checking for updates.
Than Paint .Net + the .Net framework.

Which wasn't even the discussion at hand. I'm not saying Paint.NET
should be used as the basis for comparison, in fact, I have no idea how
you came to that conclusion. What I'm saying is that I would like to see
Paint.NET using Thinstall vs Paint.NET and the .NET framework.
Just over 24MB. (The .Net install is already compressed.)

Then how does Thinstall manage to provide full framework functionality
in 6MB?

Not only that, you're missing the obvious point that the 24MB framework
download is just once, then there's just application updates. 24MB
one-time vs 6MB every time there's any kind of update/new version? On
some software that could be weekly. Plus, it's not a 1:1 like
Xenocode/Thinstall are, since the framework can/will get used by other
applications as well.
Now, I haven't tried to make a portable app in some time, but when I did,
they basically required you to change your app to fit into the portable app
scheme. Thinstall\Postbuild do not.

Well, mostly not.
Streaming and replacing or updating single EXEs on a streaming server or on
each desktop is infinitely easier than running updates (or, God forbid,
uninstalls & re-installs) on each desktop.

I don't see how [replacing one file] is "infinitely easier" than
[replacing multiple files].
I currently care for 18 small businesses and 300+ PC users, and I'll take
the short road every time, if the users get the same end result.

If you care for all these users' PCs, can't you ensure their PCs have
appropriate .NET framework versions?

If it's of use to you, power to you for being able to use something like
this. I was not disputing that in any way, shape, or form. I'm simply
suggesting not everyone believes the same, especially since there aren't
many threads clamoring to have an all-in-one package like you're suggesting.

Again, I think it has its place, but for me it wouldn't be anything more
than a nifty feature I might use once or twice. Especially since the
framework is on everyone I know's PC anyway.

Chris.
 
C

Cor Ligthert[MVP]

Chris,

Will you be so kind to pay more attention to the way you quote, the way you
do this, brings for me Tom's message in a complete other context than I was
assuming what he wrote.

Cor
 
C

Chris Mullins [MVP - C#]

Hrm. I just went back and re-read, and I don't think I mis-quoted anything,
or took anything out of context. What did I misquote, and goof the context
on?

I try to quote as little as possible, while still retaining context...
 

Ask a Question

Want to reply to this thread or ask your own question?

You'll need to choose a username for the site, which only take a couple of moments. After that, you can post your question and our members will help you out.

Ask a Question

Top