Software Packaging Formats for Windows?
darkdepeche asks: "My department is attempting to standardize on a software packaging format for the majority of our clients (which generally use Windows 2000/XP desktops). I've been very impressed with the .deb/apt system that Debian and some other Linux flavours use, I wonder if any other slashdotters use something similar to this on a Windows platform? Using the traditional Installer is a possibility but the tools are cumbersome and quite expensive. We need something that would handle several hundred applications, hotfixes, service packs, and keep history for them all. Has anyone else worked on a project like this?" InstallShield can be more complex than it needs to be and can be very hard to use. Have any of you come across an installer for Windows that is easy to use, can uninstall whatever has been installed, can manage the registry and also (maybe) have versioning controls similar to what is offered by .dpkg/Apt?
Danny Tanner woke up abruptly with a massive hangover, vomited into his bedside sick-bucket and wiped his mouth with the bedsheets. "FUCKING SHIT," he exclaimed after pressing his lips to an empty plastic 1.75L bottle of Jenkins 90 Proof Vodka, "Out again already, goddamnit!", chucking the empty plastic jug to the floor. Danny Tanner staggered his way down the hall banging on his children's doors as he passed, yelling "Get your asses out of bed! We need to take a little trip to the store for daddy because none of you little bastards is old enough to buy alcohol! I expect that you'll all have your collars on by the time I'm done taking a shit! Make sure you fasten Michelle's tighter this time!" The Live Studio Audience whoops in approval. Danny slams the bathroom door shut. Shortly afterwards, distinguishable gas farts and watery diarrhea noises are heard from the surrounding rooms, accompanied by grunts, moans and further vomiting.
... up. See you later." Danny made his way back downstairs while listening to more shuffling and manly giggling.
D.J. was aware of the consequences of not using Danny's allotted time window, so promptly put on her dog collar with the spikes pointing toward the neck, as this is the only way Danny would accept them to be worn (with fear of beating mind you.) It was always the opinion of D.J. that mild stabbing pains around the neck were preferable to a savage beating in addition to the stabbing pains later. Being the eldest forced her into the position of being "responsible" for the younger siblings and thusly would endure the majority of all beatings. Steph knew this and purposefully made D.J. chase her around the living room yelling "You can't catch me! You can't catch me!" Upon the third lap, D.J. heard a loud THUD. Michelle, previously perched on the back of the sofa, had fallen face first onto the floor. Although simply shocked by the fall, the small mongoloid only began crying as she noticed the warm blood on her finger after some nosepicking. Live Studio Audience sniggers. Steph finally decided to stop being a little shit and submitted. D.J. put on Steph and Michelle's collars and proceeded to attach the leashes.
After gaining some composure, Danny burst out of the bathroom and headed for Joey's bedroom. Before knocking on the door, he noticed grunting coming out of the room. "Don't try to insert an un-lubed summer sausage of that size into me, Joey! It'll rip!" Jesse's toned-down voice could be heard through Joey's door. Danny yelled "Uhm, I'm going out to get some booze, you guys want any?" Footsteps shuffled and magazine pages were thumbed through for several seconds before Joey replied, "No, we're cool. Jesse's just....helping me...clean
"Well well," he condescendingly remarked "so you finally learned." Danny took the three leashes and lightly yanked them along towards The Van. "Get yer asses in." Danny opened the The Van's rear door, exposing the three lettuce crates of which he had created makeshift child seats, tethered with nylon rope. "Seatbelts please. Thank you!" The girls hadn't yet fastened their "safety belts," but would need to, with Danny's erratic driving skills.
Danny Tanner peeled out of the driveway, nearly hitting D.J.'s young friend Kimberly Gibbler. The Live Studio Audience cheers with laughter as Kimmy is caught off guard and crashes her banana-seat bicycle into the Tanner mailbox. Laugh Track plays as Danny observes the incident through his rear-view mirror and remarks, "I'll deal with that shit when we get home." Danny darted down the interstate, passing cars in both the fast and slow lanes, taking the second exit. Danny disregards the offramp stop sign and tears-ass into the Safeway parking lot's primo handicapped parking space. Danny hops out of The Van, opens the rear doors, take his daughters' leashes and marches them into the supermarket's seafood section. Danny lifts Michelle into a freezer "playpen" bin and instructs his two older daughters to "Keep an eye on this one, or else." Danny left the store in a rush, exiting to the right toward Jake's Liquor Store.
Steph opens a plastic container of imitation crab meat and dumps the liquid-solid mixture onto her younger sister's head. Michelle shivers as she grips the frost-laden freezer bin's outer edges, trying to hoist herself up a bit to see what was happening in the store.
A young boy of Steph's age had escaped his mother's kiddie harness and peeked over the opposite side of the bin, where Michelle and her sisters couldn't see him. Knowing that the young child was mentally crippled, he, like the Live Studio Audience found it humorous that tugging on the toddler's jumpsuit pajamas caused her to fall over. Michelle restored herself to the former standing position on side of the freezer, but was tugged down a second time with greater force and began crying. The young boy ran away chuckling. Steph heard this and yelled "Hey I know you! You're Bobby Sherman! Wait up!" Steph darted off as onlookers watched the four-child spectacle happen around the freezer bin. D.J. yelled "Hey! Get back here!" and chased after the middle child, Live Studio Audience laughing. The shoppers quickly lost interest and didn't notice that Michelle had managed to climb out of the freezer bin. Michelle squandered her newly-gained freedom for several minutes picking up dust-bunnies from under the massive refrigerator with her cold numb hands and tasting them.
Danny soon returned from the liquor store, three shopping bags in hand. "Oh what the FUCK!" he roared as he saw the Michelle alone, sitting beside the receptacle. He heaved his daughter back into the frosty cell and went on a hunting trip for his other children. Not half a minute had elapsed before he heard the pitter-patter of two sets of feet. He spotted D.J. chasing her sister down the T.V. dinner aisle and quickly caught up, kicking D.J. square in the back as she grasped Steph's leash. Both girls fell to the floor hard as D.J. impacted with Steph. "You'll suffer the penalties when we get home, but you need to retrieve your sister RIGHT FUCKING NOW and get in The Van before I beat you right here!" The two girls make their way back to the freezer and struggle to get the little tard out and are finally hauled off by their leashes toward The Van.
After crumbling and chucking the handicapped parking ticket that was under his windshield wiper, Danny drove home at a slower speed, obeying all traffic laws for the most part. He was very angry and was deciding on the punishment for his two oldest daughters. The show's scene-switching saxophone music plays as it fades into the Tanner residence backyard, where Danny is supporting the lid of a metal box. "Your punishment, eighteen hours in the hot box! Your whore of a mother would be ashamed if she were still alive." he grinned maniacally as he shoved the girls into the homemade black spray-painted hotbox in the noon sun.
Danny, being a reasonable father, went inside with Michelle on his left shoulder. He offloaded his youngest into her crib, and returned with a bottle containing an equal measure combination of Gordon's Gin and whole milk. The Live Studio Audience "Awwwws" as the child dozes off from the alcohol she consumes, and the scene fades into credits.
Nullsoft has a great installer. Go download winamp and install it to see the installer in action. It's quick and seems to work very well (from the user perspective, at least).
The URL for the installer.
o/~ Join us now and share the software
an installer for Windows that is easy to use, can uninstall whatever has been installed, can manage the registry and also (maybe) have versioning controls
The Nullsoft SuperPIMP Install System does three out of four...and it's quite possible that you could script the versioning yourself. Check it out.
(A few years ago, I was employed by WISE Solutions.)
Installing on Windows is not just a matter of ease. It is also a matter of knowing what works, and what doesn't work on all platforms. Hacking the registry is easy, *knowing when* to hack it is not so easy. InstallShield can be very complex, but it allows great flexibility. WISE is generally easier to use, and generally has what you need.
After seeing countless scripts, I can say that most people (of whose scripts I've seen) do not know what is going on. Luckily they used a tool, or else who knows what sort of damage they would have caused.
Considering a decent tool costs less than one thousand dollars, it is well worth the time you will save learning how to install files. Also, considering the main tools keep up with Microsoft rules (usually) there are less "gotchas" to worry about.
Both WISE and InstallShield have strong userbases. You can easily tap into a lot of knowledge with those tools.
Have you read my journal today?
If you dare to travel into the domain of Novell, their ZenWorks system is quite robust. It allows for selective and forced installation, and the packaging system always struck me as quite sophisticated.
You can't get a blue screen on a black and white monitor.
When did Cliff start to get paid by the question?
Three questions today? And all three lame? Geezzz... Ease up on the posting trigger there, hoss!
-Bill
SlashSig Karma: Excellent (mostly affected by moderatio
That would be another totally free option. You can get it at http://www.jrsoftware.org/isinfo.php. It creates installers with the new Windows Installer look, consisting of one single Setup.exe file. Plus, some third party extensions add scripting capabilities (http://www.wintax.nl/isx) and an install builder IDE (http://www.bhenden.org/istool). Many consider this to be the best free install builder, rivaling even some commercial ones.
Of course, it doesn't address versioning or online updating. But any of the systems I've seen seemed proprietary and bound to a particular product--check out Microsoft's Windows Update, for example. It would be nice if someone came up with a complete solution, including a back-end server (or maybe FTP or HTTP based) and a client-side app that was installed along with your app and knew enough about it to do a live update. Plus, of course, an admin tool for the back-end to manage all the bits there.
http://www.microsoft.com/windows2000/techinfo/howi tworks/management/installer.asp
I mean, really. MSI has got what you need. And if you use Visual Studio, then, well, DUH. It lets you remotely install stuff... it helps you manage your installs... it integrates with Terminal Services. Really. It's the Offical Microsoft Answer to RPM. sheesh!
http://www.nullsoft.com/free/nsis/
As a Windows support tech for a large company, I have seen it all! Most software installations are absolute CRAP! Makes you wonder how many monkeys put the install package together!
Seriously, most install packages are very very very broken! i.e. Newer DLL's get overwritten by older DLL's. I had systems setup with DB2, Oracle, Sybase, etc. All nicely setup in ODBC and all working side by side. Then the user installs some MS-Access based VB Application with a broken installer and WHAM! No other database on the workstation will function! Come to find out it only installed a partial ODBC setup and overwrote newer files with old ones.
Thank God for http://www.microsoft.com/data/ - Where one can download a working MDAC, unfortunately, it's required to UPGRADE to repair the damage. But at least they provide many versions of MDAC. I usually just upgrade to the next version up and not all the way, lest I have to do this again next week!
The absolute worst of all application installations come from Microsoft development systems. i.e. Visual Studio, VB, etc. It is a royal pain to fix a developers workstation after they've been allowed to muck it up.
We had to implement a system we call the DLLStack. This forcefully downloads a known good set of DLL's for the OS and major applications (MSOffice, etc). An automated installation system was setup so users can pick the software to install and it will run answer files while it walks through the installation. Then the DLLStack is run to repair the broken installations.
Besides broken version testing (namely DLL checking) the second most common problem is caused by incorrect registry entries. In many cases these entries are made by the Microsoft installer or InstallShield. The problem is the person making the installation package doesn't even know this key was autogenerated by the tool. I've found keys that actually are not supposed to be there at all! Invalid paths, etc.
We have to lock down everyone's PC so users don't install something and break it. Engineers, Desktop Technicians, and programmers get local admin rights but no one else.
Linux RedHat RPM and Debian Apt-Get are very very cool systems. Even Solaris has something similar. It would be nice if this type of system were available for Windows but Windows works differently. i.e. the Registry is a big problem as well as registering DLL's, OCX's, etc.
I suppose it could be done. Ever priced out InstallShield? How about the courses required to learn how to use it properly? OUCH!
Tivoli's Software Distribution (now part of the Tivoli Configuration Manager) system works pretty nice. It integrates nicely with Tivoli inventory so you can do things like install a certain software package to all computers with more than 300mhz, 128megs of ram, and windows 2000. It supports checking dll versions, variables, package versioning, and package dependencies.
It even has a "Transactional" system to allow updating of core system files that are locked.
It is also cross-platforms from Windows to Linux to HP-UX to AS400. Pretty much every platform imaginable is supported.
I've been working with it non-stop for the last few weeks and I've been pretty impressed with it.
Oh yeah, and call Maryville Technologies if you need any help designing and implementing Tivoli infrastructure and packages. *shameless plug*
Ian
I've setup and used SDO from computer Associates, and Visio64 (but they are closing). Has mentioned above tivoli is also an option.There's also SMS from Microsoft but some dev is necessary to make it work.
Whith SDO you'll be able to distribute to Microsoft OSes,Novell and a bunch of Unix systems has well. The architecture is build around a MS SQL database which will store information on packages, client machines. You'll be able to schedule when you're distribution will occur (thus not killing your network). A neat option that's bundled with the product is called DTO. This option lets your decide which network route will be used to reach the clients. With it you'll be able to say : to reach machine C go thru machine B, not A. This really is cool.
none Yet.
Could be worth a look.
(Used by some open source projects, that's where I saw it first...)
C:\> apt-get upgrade
Processing File Dependencies... Done
Reading Package Lists... Done
Building Dependency Tree... Done
The following packages have been kept back
security-fixes
The following packages will be upgraded
dot-net-service-pack
Get:1 http://apt.microsoft.com xp/updates dot-net-service-pack 264 [30367762kB]
Seconded on all those points, particularly the professional look of the installer. What really sold me on this installer was the fact that it runs entirely from a script file, GUI is optional, and you compile your script and program resources into a single squashed .exe. This makes it ideal to run from build scripts, and even better the setup compiler runs under Wine, so sending out frequent releases from a Linux development machine is easy.
Matthew @ Bytemark Hosting
I've used InstallAnywhere for the couple Window projects I've done. These were Java apps and the program didn't care. The beauty of it is that it is cross platform. It can generate installers for Windows, Unix and Mac. They have a limited free version and the sales guys give up after a couple non-responses. The full version isn't too expensive either. Fully scriptable. Very slick.
Nullsoft's NSIS is great and it took me no time to learn. I've been using it for ages and it works perfect. It is much smaller and faster the your "WISE" installer, and it is a hell of a lot less expensive. This is especially important if you are going to standardize on it!
-- these are only opinions and they might not be mine.
Actually, it's probably one of the better kept secrets in the installer world, although, judging by the number of downloads on their website, it's quite popular. Plus, doing a Google Groups search on installers returns lots of references to Inno.
I had a small, popular application (> 2M on download.com) and we initially packaged it using InstallShield. It was god awful.
.. TASK MANAGER... yes, open that up and look for a task named _isdel that's underscore india sierra delta echo lima... yes. KILL IT!"
Installer size was 3 times the size of the app's footprint post-install, and there were many bugs in the installer code that caused many users fits. The 2 most galling (and frequent) bugs were
--- "oh, ok it does that sometimes... open up your task manager
--- "it says you are out of disk space even though you have 500 G available? hmmm try deleting \windows\temp\*.* Try again and pray!
With such a simple challenge as installing files and touching some registry doo-dads, I was left wondering: did they ever test this code?
Based on this poor performance, we tried the middle-of-the-road version of Wise's Install_____ line : InstallBuilder. Instant bliss. Installer size was reduced around 50% (!!!!) and ALL issues of the installer not working just VANISHED. Moreover, while I cannot say I loved either interface for designing your installation logic, InstallBuilder was substantially better in this area.
You cannot afford to have a popular product and rely on InstallShield. The bandwidth wastage is significant for small apps, and the problem incidence rate is just pissing away goodwill.
tone
This makes sense from a managing-customer-expectations view: They likely want a working copy now and they (and you!) don't want to be involved in getting online, finding out it's stale software, long downloads, corrupted downloads, etc. Let the installer install, that's nasty enough.
Many apps offer a menu option that fires off a URL event for update-checking. The web-browser opens up the page and there you are. Some applications are clever and fire off a URL event with the version number already encoded so you get your version-check right away, automatigically answer is there more or not. Others make you look up your own version number and then figure out what your choices are. And some take the opportunity to include the serial number and such "for the record."
An alternative is a polite version checker that (with permission!) automatically checks for updates every so often, say two weeks, or on demand. If there's no new version it quietly shuts down and nobody was disturbed. Or if it was a manual check it gives a nothing-new response. If there is something new it gives a response and supplies a link to the appropriate web-page/download/whatever.
Of course any such transaction should be well documented and easily interpreted so folks know exactly what is being 'phoned home' and don't start getting the willies. This may mean a larger transaction then strictly neccessary but keeping it human-interpretable is likely valuable in a suspicious world.
So with all of that said I'd like to point folks to one existing implementation: Simple Internet Version Control Protocol. I've no connection whatsoever with it beyond having a product or two on my machine that use it but it's always seemed to me to be a well-thought-out bit of code and after 7 years of in-production-use likely well-tested. Oh, and I may have met the author years ago (Chris, were you @neu.edu?)
It does version-control, also does anonymous user counts, it's free in all senses, there's code examples, etc. Here's their summary:
I don't read ACs: If a post isn't worth so much as a nom de plume to its author then I wont bother either.
Novell has had a package out for some time now that does this quite well... It was NAL (Novell Application Launcher) and it got turned into part of ZENWorks a few years ago. I assume they're still supporting it, although, I haven't done anything Novell-related in a few years. Great NDS integration, and an application image generation that works great (takes a snAPPshot of your system before install and after install and then saves the deltas to apply to other PCs), will allow you to choose what icons show up where, and will check to make sure the app is installed, allowed to run, has availible licenses, and is of the right version before launching. If it's not installed, or needs an upgrade, it'll install it automatically. It's really flexible and quite sturdy... Maybe MS will have something that's that easy in Active Driectory soon, but Novell's had that working with NDS for years now.
The link is http://www.dbpoweramp.com/developer-spoon-installe r.htm. I hope this helps as I have not seen it mentioned. I was so happy when I ran across it while using dbPowerAmp made by the same person to convert my mp3s to wma for my portable wma player.
Chris
The problem here was that I have never built any packages, much less on windows and of course had never used Install Shield. While this was explained in various communication formats to the staff they just threw me into the icy, windy sea of AdminStudio without so much as an idea of where I was much less a life raft. I needed (and will most likely in the future need) a graduated system that will get you up and running and take advanced steps one at a time. Instead of the method they employed of two 'modes': simplistic and useless (except for simply copying files) and then full blown 'you must mind meld with your machine' mode.
While they had simpler products I found that for such simplicity the price was a complete lack of customizable dialogs, third party app controling methods and any sort of system/user/admin variable use.
Now I am not really busting on Install Shield, beleive it or not. I saw great potential with AdminStudio once you became intimate with every aspect and nuance of Windows Installer, installation methods, registry control, internal file/service locations, service and app (third party) install and config methods, and of course AdminStudio itself.
On a side note, after doing a bit of checking for tutorials, guides and training, I found only expensive classes (that my 'complete-lack-of-buisiness-sense-or-forward-think ing-but-totally-ego-ridden-and-dishonest-and-incon sistent' management consider an option, regardless of the very real need). I saw that Wise touts itself as a very intuitive interface and targeted (philosophically) towards rapid development, and have seen some echoing on various boards. Is this true? Is it too much to ask for a scalable packaging system that will be simple to use? If I must know every detail of of the systems to be on, the parts installed, and the whole packaging process, then why not save money and the vendor specific learning curve by simply working with the Windows Installer database method (they have an SDK and it works with VB). What do these vendor systems offer except heart ache? :)
as the subject says, I found that responses to problems were cricket chirping on the Install Shield forums.
Where is a good reference piece, forum and/or tutorial that points out various methods of adapting exisiting projects to be more friendly to multi system (even platform) deployment? As an example: With a system that uses multiple scripts to copy files, register components and edit the registry, is it better to create a master list of the parts, organized by function, version, etc that can then be called upon? (and thus abstracted enough to avoid lengthy updates and cross dependency recalculations of each part if a change is made) What I am looking for is a sort of 'Dummies guide to building apps and installing them' :)
thanks
Surely you anticipated this! :O
Start>programs>administrative tools>group policies
play around with the software group policies, you can figure out the rest.