| ||
|
This community works best when people use their real names. Please register for a free account. Links:
» Joel on Software discussion Movie:"Make Better Software" is a 6 movie course designed to help you as you grow from a micro-ISV to a large software company. If you're hiring employee 2 through 200, this movie was created for you! Moderators:
Eric Sink
Bob Walsh |
Hi, So I've come up with what I think is a good idea, put together a web-site and I have created a beta version of my app that I have installed on my home PC so my significant other can help my by doing some UAT. The app was created using VB.Net in VS 2008 and uses a SQL Server Express db. In doing my first installation on my home PC the required installs from MS were; .Net Framework 3.5 SP1, Windows Installer 4.5 and SQL Server Express. The setup package is pretty good in that it told me what it was downloading. Unfortunately though it took about 1 hour to download all three items and install them on my home PC, this is including the reboot. <UGH> At this point I was quite shocked, I didn't figure on the installation of my app to be so long and realistically the only people that wait for this to download and the installation process are going to be my friends or family because I don't imagine that anyone else is going to jump through all those hoops just to have the privilege of paying for an application. So it was time for an internal review. I ended up realizing the SQL Server Express was too much and downgraded my app to use SQL Server CE, which has a stand alone install mode that should make things easier, just 7 files et voila SQL CE is deployed. But I was concerned about the .Net Framework and I spent the better part of the last week removing the 3.5 specific items from my app; namely TypedDatasets. At this point I was working through the install process again and doing some digging and came across a post by Scott Hanselman; regarding the .Net framework install; http://www.hanselman.com/blog/SmallestDotNetOnTheSizeOfTheNETFramework.aspx. After reviewing his post and doing some more digging I am really concerned about releasing my app given its dependence on the .Net framework. I think I'll be ok given that I am using the .Net Framework 2.0 but I was wondering what other mISV's did in this situation. What about a linker? Has anyone tried or can recommend an reasonably affordable one? What do you think? Comments, suggestion or ideas are all welcome. Cheers,
Kevin Thursday, January 22, 2009
You may also want to take your potential customers into consideration. People buying relatively new PCs, will generally get some version of .NET installed along with Windows for them, or will otherwise get it along with their first set of patches. Corporate workplaces, will generally roll out .NET to all of their client desktops as soon as the download passes muster. Not to propagate a stereotype but it's really the small business owner holding onto their seven year old machine and refusing to upgrade anything for fear of it breaking, that you'll run into trouble with. Anecdotally, those customers are probably unlikely to buy your software to begin with. I can't give you an answer to the original question, but you might determine its moot, if the vast majority of your potential customers will already have your version of .NET installed.
The full download for v2 is only about 18mb and as David stated, most will already have it running so it shouldn't be an issue for most people. My installer checks for it and downloads if necessary. I haven't had any issues with this but I have no stats to back this up.
Yeah, I think as long as you stick with .NET 2.0, you should be good. Most computers have it now. Vista and Windows 7 will also have it, and for those that don't it's only 18MB. Not 150MB or so. Hearing about your database installation problems, I must recommend SQLite.NET to you. It doesn't require a separate installer for the user. I'm using it for my next product release, and it's great.
Here's somebody using the .Net client profile http://blog.getpaint.net/2008/08/25/the-paintnet-install-experience-part-2-version-40/ But if you only need 2.0 features then this shouldn't be much of worry.
I switched my applications from .net 1.1 to 2.0 about a year ago and have been selling to the B2B market (pretty broad range of small, medium, and large businesses). Personally I use INNO Setup and the .NET install script for it that checks for .NET 2 and downloads it only if needed. INNO doesn't need any extra Windows Installer files (that used to be a problem when I was using Installshield or any .msi type installer). I also use Firebird for the database instead of any MS technologies which (at least in the past) always came with multiple DLLs and dependencies. My installation package is now about 7 to 8MB, including the 3rd party components for GUI and Reporting. I host it on Amazon's S3 service, and have had 0 complaints about download time. My feeling is that you at least want to minimize the number of non-native components in your stack. Since I'm using .NET components for UI and Reporting, and my application is in .NET, I decided to standardize on that and not introduce any additional dependencies like MDAC or SQL or Windows Installer. This has worked out pretty well compared to previous experiences I had with lots of dependencies on different technologies.
B2B Micro ISV Thursday, January 22, 2009
Tudumo uses 2.0. I'll keep the base there and will only release a Vista/7.0-specific version when that footprint is big enough. In future I'll try to stick to versions that come with the O.S. - none of this in-between stuff. I had a few questions about .net in the beginning. I don't think I've had one in ages. I do recommend keeping dependencies as low as possible - in the land of many alternatives, don't put barriers in the way. About the linker idea - I've also considered it, but it's not for me. I like auto-updates, so having a smaller install means your auto-update is quick, even if they need a larger once-off install to get the framework installed. Try to keep dependencies down, but if something makes your app demonstrably better for the user (not just coding ease), use it.
Try using innosetup with a script to detect/install version 2 of the framework during installation. It's not that big, around 20mb.
Some fool Friday, January 23, 2009
We use .net 2.0 and use Xenocode's linker. Our entire download is about 70 MB (25 MB of which is the .exe and the framework). So far it's worked flawlessly. I'd be concerned about trying to install the .net framework for the user. Either you direct them to the Microsoft site to download (and introduce complexity to the install, as they have to navigate to the download, maybe choose an O/S, etc.) or you install it for them, in which case if anything gets fouled up then YOU get the blame. (You might get the blame even if you were directing them to the MS site). And that doesn't even include all the other updates they'll need, which you mentioned. Think long and hard about every dependency you create and whether it will increase your recurring costs (support) or reduce your customer base.
If your app is under 30mb (including framework), I wouldn't worry too much. By comparison, the latest version of Quicktime is 75.1mb
+1 for "30 MB download not a big deal". When we considered using .net I looked at our downloads and compared our two most popular products (one with a 10 MB d/l and the other about 25 MB). The 25 MB one (slightly more popular) had more completed d/'s than the 10 MB. My conclusion: at least in the size, the size isn't a big deterrent. I think the *complexity* of the download is a bigger deal than the download time (if it's within "coffee break" time). It's very easy for a user to see "oh, download proceeding OK. I'll go get a cup of coffee and come back" vs. "Download dot WHAT? What is this "license agreement? Who is Microsoft? What do I click on to install this .net thing". Easy almost always beats fast. | |
