A programming language similar to BASIC, with a touch to C, FORTRAN, and PASCAL. Orignially designed to create installations for Microsoft Windows products. Only allows the developer to control the installation process, not the uninstallation, and as a result, files created by the program are usually not uninstalled.

An incarnation of pure evil in the guise of a software installation program. Created by the InstallShield Software Corporation (http://www.installshield.com), which describes itself as "a leading provider of professional Windows software development tools." Best known for programs such as InstallShield Professional and InstallShield for Windows Installer ... of Doom.

Contrary to chaosdiscord's writeup, InstallShield is not the actual programming language. InstallScript is the scripting langauge in which InstallShield installations are written. It is similar to C and related languages, but much more diabolical. InstallScript consists mostly of functions, which are used to create event-driven scripts that run setup, configuration, and uninstallation procedures. (And you can control uninstallation events, but it often does leave files or registry entries behind after uninstallation.) Frequently, these functions are difficult to understand at best, and require advanced degrees in programming, engineering, physics, higher math, and/or a background in interpretive dance.

Anyone who has ever been unfortunate enough to have been required by an employer or other entity to create or modify an InstallShield project will understand what I am talking about, even if they do not wholly agree with my assessment. While, in essence, InstallShield is a nifty little tool for creating installations, it often breaks, does not do what you expect/want it to, and may even cause damage to existing software or operating systems, for no apparent reason. And of course, like other programming languages, leave out one little semi-colon and watch the compiler blow up, but God forbid it should clue you in to what you did wrong, or where your syntax error is (frequently prompting me to scream obscenities at my computer and bitch about how the stupid code won't compile). Furthermore, trying to talk to their support staff is like trying to squeeze orange juice out of a lemon. You can almost get them to understand you, if you're lucky enough to get someone who speaks fluent English, and you can come close to a resolution, but you can never quite achieve your goal of actually solving your problem. However, they may insult your intelligence several times in the process, if you like that sort of thing.

Luckily, there are newsgroups and a website to bitch about the inefficacy of InstallShield, and to beg other users for help. You can try the news.installshield.com server, which offers such fascinating lists as installshield.is6.general, installshield.is6.installscript, and even the installshield.is6.wishlist, where you can fervently pray and sacrifice small woodland creatures (or your sanity/job security/hard drive, whichever is more highly valued) to the demi-gods of InstallShield to enhance crappy features, and fix age-old bugs (which are, not surprisingly, just called "features"). There's also http://www.installsite.org which maintains lists of bugs and fixes, software updates, and a searchable support database. It is not run by InstallShield; therefore, it may actually provide some insight and help.

Things you might like to know about InstallShield Developer (version 8.0) before you break your head on it.

This is the knowledge I accumulated in the past three days of intensive shielding from installation. One of the nice things about InstallShield, and with it InstallScript, is that it has a great deal of functionality. This is probably why it gives people so much trouble. Basically, having come close to mastering InstallScript (with little choice in the matter), I found myself developing more and more complex algorithms. Often I would be missing other programming language features only to discover they were in there somewhere. It's got what you want. You just need to weed out what you don't. The only really useful thing it seems to be missing is Regular Expressions. Short of that it's got just about everything. One of its best features is that there is a lot in the help files, it isn't always organized and linked as thoroughly as it might be, but everything is there if you look around with just a little ingenuity.

InstallScript itself is a strange mutation of VB and C-like syntax. For someone who is familliar with both, you can pretty much guess how to do what you need, a glance at the help files every now and again will go a long way. One of the things which is most difficult to accept is that you can't return strings from functions.(Not with the return statement anyway, though you can return them ByRef.) I imagine you could use pointers (which InstallScript has) to do that, but really people, we're just installing files here. In that particular sense the language is surprisingly unabstract. It's lower lever than VB, but nothing like C. There are also many convenient functions, especially VerCompare which lets you compare version numbers.

It's not all fun and games. It took me a whole day to figure out how to properly add Custom Dialogs. Once you find the right help page (CtrlSetText example code) you know how the code is supposed to look, but there was no nice walkthrough that explained what settings needed to be set to make a Dialog which you could use with such example code. The example cops out and loads a standard dialog so it can teach you how to manipulate it. In this rare instance the help file is not your friend. This is why my agony lasted the better part of a day. Here are some of the secrets:

  • If you aren't loading a Dialog from some strange DLL you've created because you are already a super-guru master installshielder, then you can ignore the DLL argument in the EzDefineDialog function. (Oh, side note: if you aren't a super-guru-master installshielder, no need to use the non-Ez functions when there are nice simple Ez- functions that can simplify your life. One big caveat: If you need the not-so-Ez functionality, use away. (Of course))
  • Also ignore trying to use the szDialogID parameter, stick to the nDialogID, it actually seems to work. Here is the big secret: How do you set a custom Dialog's ID? there's no option to do so in the UI-Editing area which InstallShield provides. Instead, you need to go to one of the bottom tools on the left-side menu, named the Direct Editor. Sounds like that is the Nexus, the place where anything and everything is at your finger tips, right? Not so. There's a lot of stuff there which you can manually configure, but what ends up there and what doesn't seems arbitrary to this humble user. But, before you start to feel daunted, guess what can be found there: The Dialog's numeric ID. So, we go to the Direct Editor, set the Dialog's ID, and then...
  • We can use the magic phrase:
    EzDefineDialog("WhatYouWillCallYourDialogFromNowOn","","",TheNumberYouTypedInTheDirectEditor);
    Lo and Behold, your dialog is now defined. Now it is a simple matter of plugging it back into code provided in their friendly examples, namely using this function:
    WaitOnDialog("WhatYouAreCallingYourDialog");
  • The last secret catch to implementing custom dialogs in the midst of your installation is this: the dialog is secretly modal(and or Popup) which might be okay for some, but it claims the foremost place on the screen, so if you pop up any little MessageBoxs which are smaller than your dialog, you don't see them, but your dialog has now lost focus and is blocking on the little MessageBox which it is occluding. It's really funny when you think you have accidentally introduced an infinite loop into your Installation code. For about a minute, and then it is infuriating until you finally realize how to force the dialog not to be modal and always on top. The secret lies in the Dialog Editor under the property "Other Windows Styles". You want to make sure to turn off anything that says Modal and/or Popup. This solves that little frustration.
That concludes our brief discussion on how to alleviate some of the agony involved in working with InstallShield. Any New discoveries will be added in due time.
I wrote this under the influence of the addictive feeling of sudden eureka-like euphoria at having gotten something to work. Corrections/Clarifications would be appreciated, or any other useful tips that could be included.

Log in or register to write something here or to contact authors.