Page 1 of 1

Using InstallAware to replace Package4theWeb

Posted: Wed Jul 01, 2009 10:25 am
by DanStutzman
Currently we use InstallShield Package4theWeb to distribute multiple file based software installs but because of our deployment software (LANDesk), we often run into problems with exit codes based upon embedded scripts within the PFW executable.

I have developed a very simple solution that is very easy to use and maximises the compression that IA has to offer. This solution will not create an ARP entry.

This is using the Blank Setup template.

Code: Select all

[OFFLINE CONTENT]
Display Dialog: ShellProgress, use as progress dialog (non-modal)
Get Component Tandberg Movi.msi Selection State into Variable Selected
MessageBalloon: YOUR COMPANY, Tandberg Movi v2.0 is installing...
Run Program $SUPPORTDIR$\\TANDBERG Movi.msi /qn (WAIT)
Hide Dialog
If you are using TRANSFORMS, pass TRANSFORMS=$SUPPORTDIR$\\%NAME%.mst /qn in the parameters option.

The MessageBalloon is optional. I have a static dialog box (ShellProgress) that shows no progress. When using for multiple installations, I use the MessageBalloon as a debugging tool.

Posted: Wed Jul 01, 2009 3:06 pm
by MichaelNesmith
Nice!

You can also use File Bag when adding more packages or to restrict package access to an internal network; also the Get Component Selection call is unnecessary. Finally, using (Un)Install MSI Setup instead of Run Program would let you track (and cancel) native installer progress as well as actual error reporting instead of a numeric code.

Just my 2 cents :)

Posted: Wed Jul 01, 2009 3:19 pm
by DanStutzman
MichaelNesmith wrote:Nice!

You can also use File Bag when adding more packages or to restrict package access to an internal network; also the Get Component Selection call is unnecessary. Finally, using (Un)Install MSI Setup instead of Run Program would let you track (and cancel) native installer progress as well as actual error reporting instead of a numeric code.

Just my 2 cents :)
Thanks.

I've been testing this all day and while I cannot use FileBag because of the environment I'm in, I did discover the other things that you have recommended. What is really nice is that I'm saving on average 30% on EXE size over PFW and it plays very nicely with LANDesk.

Just a quick question:

Because I use a static Progress dialog, I'm using MessageBalloons to indicate various packages as they are being installed. What I want to do is add a MessageBalloon that will stay up when the dialog window closes for 60 seconds. What do I need to add to my script to make that happen?

Thanks in advance Mike.

Posted: Wed Jul 01, 2009 3:40 pm
by DanStutzman
Mike,

Quick question. I have the new process which is working quite well, but I want to add a file to the All Users Desktop but it is a no-go. Here is my code:

Code: Select all

[OFFLINE CONTENT]
Display Dialog: ShellProgress, use as progress dialog (non-modal)
MessageBalloon: ARAMARK Software Deployment Services, Installing Adobe Acrobat 8.0 and all updates...
Install/Remove MSI Package $SUPPORTDIR$\\acrostan.msi[TRANSFORMS=$SUPPORTDIR\\acrostan.mst PATCH=$SUPPORTDIR$\\AcrobatUpd810_efgj_incr.msp;$SUPPORTDIR$\\AcrobatUpd811_all_incr.msp;$SUPPORTDIR$\\AcrobatUpd812_all_incr.msp;$SUPPORTDIR$\\AcrobatUpd813_all_incr.msp REBOOT=REALLYSUPPRESS]
Install Files C:\\Documents and Settings\\ARAMARK\\My Documents\\Adobe Acrobat 8.0 Standard\\Adobe Acrobat 8 E-license directions.doc to C:\\Documents and Settings\\All Users\\Desktop
MessageBalloon: ARAMARK Software Deployment Services, Adobe Acrobat 8.0 Standard has been successfully installed.

Posted: Wed Jul 01, 2009 3:59 pm
by MichaelNesmith
You need to call Apply Install which is not a good idea because it will create an entry in Add-Remove programs. What you can try is call Call DLL Function on CopyFileA in kernel32.dll, or alternately, use Copy Local Files from either a File Bag location or support files, and then call Apply Uninstall after Apply Install and the files won't be uninstalled because of the local nature of the action per Windows Installer implementation.

The moment your setup script runs out, the program is complete. So you may want to call Sleep (if I recall the name right) again using Call DLL Function to induce an artificial delay, or just update the progress dialog using Set Variable on PROGRESS and PROGRESSTEXT, etc.