I am using the trial of InstallAware 9 R2.
We want to automate updates of our product to our end users in the field offices. I understand I can use the Update packs and have the option of choosing Manual Update Checking (Start Menu shortcut) OR Schedule updates (similar to Windows Update).
What if we put out an update that really MUST get the next version before the "Scheduled update" runs or can't rely on them manually doing it.
The only option I see is for my application on start up to check and see if there is a new version and then have it call the update command.
How do others deal with needs of immediately updating the next time the user runs it?
We have also written our own update facility in the past, but would like to take advantage of InstallAware features when we can.
Thanks.
Update Packs - Wanting to force update
Re: Update Packs - Wanting to force update
I've done some further reading and found that I can do the following for my application to check for updates every time it runs.
1) Prior to doing any updates make sure setup.exe /updatesetup /s has been ran at least one time to initialize things.
2) When my apploads and goes to check for an update determine the location of the update client via one of the registry entries depending on whether this was installed as a "Just Me" or "All Users"
3) Then run setup.exe /update or setup.exe /update /s from my program.
Here comes the question. I have never called a program that will possibly update my program from within itself.
If I call the setup.exe /update will it be able to successfully update my program while my program is the one actually calling the setup.exe /update???
How would it be able to update the application.exe if it is the one calling the update?
Anyway... I want to make sure I know how to do this and allow it to receive a new update and not require a reboot because I had the EXE file open.
The document talks about exit codes for me to check in my program, but how would it ever succeed if my application being update is running?
I hope I am making sense to someone.
Thanks in advance.
1) Prior to doing any updates make sure setup.exe /updatesetup /s has been ran at least one time to initialize things.
2) When my apploads and goes to check for an update determine the location of the update client via one of the registry entries depending on whether this was installed as a "Just Me" or "All Users"
3) Then run setup.exe /update or setup.exe /update /s from my program.
Here comes the question. I have never called a program that will possibly update my program from within itself.
If I call the setup.exe /update will it be able to successfully update my program while my program is the one actually calling the setup.exe /update???
How would it be able to update the application.exe if it is the one calling the update?
Anyway... I want to make sure I know how to do this and allow it to receive a new update and not require a reboot because I had the EXE file open.
The document talks about exit codes for me to check in my program, but how would it ever succeed if my application being update is running?
I hope I am making sense to someone.
Thanks in advance.
Re: Update Packs - Wanting to force update
I will investigate and provide you a response first thing Monday, unless someone else is able to pitch in before me.
Andy Mills
InstallAware
Other Help:
White Papers (HowTos) - http://www.installaware.com/publication ... papers.htm
Product Guides - http://www.installaware.com/publication ... guides.htm
InstallAware Help - Press F1 in the InstallAware IDE.
InstallAware
Other Help:
White Papers (HowTos) - http://www.installaware.com/publication ... papers.htm
Product Guides - http://www.installaware.com/publication ... guides.htm
InstallAware Help - Press F1 in the InstallAware IDE.
Re: Update Packs - Wanting to force update
Thanks, I look forward to what you find.mills wrote:I will investigate and provide you a response first thing Monday, unless someone else is able to pitch in before me.
Re: Update Packs - Wanting to force update
Try this approach:
Set to Receive Application Updates (manual)
Change the Update Start Menu shortcut to display the name of your executable (and probably your icon).
In the generated "updates" script, you can place a Run Program to call your application before each Terminate Install. Note you only need to do this in the compiler blocks where UPDATE SCHEDULING is FALSE.
Note, you can create a custom GOTO block to include that call to your app and the terminate install, so you don't have to edit each Terminate Install call individually.
...This is a little difficult to describe, so please let me know if you need any clarification on this.
Set to Receive Application Updates (manual)
Change the Update Start Menu shortcut to display the name of your executable (and probably your icon).
In the generated "updates" script, you can place a Run Program to call your application before each Terminate Install. Note you only need to do this in the compiler blocks where UPDATE SCHEDULING is FALSE.
Note, you can create a custom GOTO block to include that call to your app and the terminate install, so you don't have to edit each Terminate Install call individually.
...This is a little difficult to describe, so please let me know if you need any clarification on this.
Andy Mills
InstallAware
Other Help:
White Papers (HowTos) - http://www.installaware.com/publication ... papers.htm
Product Guides - http://www.installaware.com/publication ... guides.htm
InstallAware Help - Press F1 in the InstallAware IDE.
InstallAware
Other Help:
White Papers (HowTos) - http://www.installaware.com/publication ... papers.htm
Product Guides - http://www.installaware.com/publication ... guides.htm
InstallAware Help - Press F1 in the InstallAware IDE.
Re: Update Packs - Wanting to force update
This is an interesting work around, but it does seem more like a work around than an established method of doing a forced update before the application is allowed to run again.
Is there a command switch that can be used with the setup.exe that can simply return whether there is an update or not instead of forcing the update to happen???
If I can do this then my program can get a return result indicating an update is available from the setup.exe and then I can initiate the setup.exe /update from my application and have my application close right when it spawns the update. This way it should update fine. Then the update could run the application again.
I'm sure I can read the update.ini myself from my application and try and determine if there is an update, but it seems there are hundreds of applications out there that when run detect if there is a newer version and then force an update before continuing (as well as many that don't force an update). Of course many may be custom update routines within the application, but I would imagine someone has done this with InstallAware.
Is there a command switch that can be used with the setup.exe that can simply return whether there is an update or not instead of forcing the update to happen???
If I can do this then my program can get a return result indicating an update is available from the setup.exe and then I can initiate the setup.exe /update from my application and have my application close right when it spawns the update. This way it should update fine. Then the update could run the application again.
I'm sure I can read the update.ini myself from my application and try and determine if there is an update, but it seems there are hundreds of applications out there that when run detect if there is a newer version and then force an update before continuing (as well as many that don't force an update). Of course many may be custom update routines within the application, but I would imagine someone has done this with InstallAware.
Re: Update Packs - Wanting to force update
The suggestion I made is the closest I can think to what you want, but sort of reverse of what you're after.
Updater checks for updates. If there are updates, update. If not, launch application.
You could also modify the existing (scheduled) updates script to pass default values instead of asking the user to provide them, so that a check is performed on each logon.
The way it sounds like you want to do it, you would need to read the ini File to check for updates before calling the updater. But, it does sound like you would need to change the update script to still run your application after the update has completed.
Updater checks for updates. If there are updates, update. If not, launch application.
You could also modify the existing (scheduled) updates script to pass default values instead of asking the user to provide them, so that a check is performed on each logon.
The way it sounds like you want to do it, you would need to read the ini File to check for updates before calling the updater. But, it does sound like you would need to change the update script to still run your application after the update has completed.
Andy Mills
InstallAware
Other Help:
White Papers (HowTos) - http://www.installaware.com/publication ... papers.htm
Product Guides - http://www.installaware.com/publication ... guides.htm
InstallAware Help - Press F1 in the InstallAware IDE.
InstallAware
Other Help:
White Papers (HowTos) - http://www.installaware.com/publication ... papers.htm
Product Guides - http://www.installaware.com/publication ... guides.htm
InstallAware Help - Press F1 in the InstallAware IDE.
Re: Update Packs - Wanting to force update
Yes you are correct. I am going to play with this a bit. We are use to fully controlling the check for updates and then calling the updater, but we thought we could avoid coding that logic if we could find a simpler way to do it via the existing installer.
There are so many things we want to do, but it seems everything we want to do are not "simple" as we were hoping. I am going to be doing some more posts, but things like:
- Us setting the default auto updates without prompting the user when we don't need forced updates at application launch.
- Controlling the updates at application launch
- User authentication to prevent just anyone from downloading updates or the installer.
- Serial number validation needs so applications I might sell are secured.
Even though InstallAware is suppose to be the easiest it still takes a bit of work to do some of these things... or at least a big learning curve for those not already experts at installer technology.
Back to the forced updates. It would be good if there was a way to call the setup.exe with a switch that simply returns a result as to whether there is an update available or not. I would like to suggest this as a feature request so those looking to force an update could check for it and then call for a full update if it was there.
I will also try what you suggested, but I prefer having the launching icon to launch my application and not the setup.exe as a work around if that makes sense.
There are so many things we want to do, but it seems everything we want to do are not "simple" as we were hoping. I am going to be doing some more posts, but things like:
- Us setting the default auto updates without prompting the user when we don't need forced updates at application launch.
- Controlling the updates at application launch
- User authentication to prevent just anyone from downloading updates or the installer.
- Serial number validation needs so applications I might sell are secured.
Even though InstallAware is suppose to be the easiest it still takes a bit of work to do some of these things... or at least a big learning curve for those not already experts at installer technology.
Back to the forced updates. It would be good if there was a way to call the setup.exe with a switch that simply returns a result as to whether there is an update available or not. I would like to suggest this as a feature request so those looking to force an update could check for it and then call for a full update if it was there.
I will also try what you suggested, but I prefer having the launching icon to launch my application and not the setup.exe as a work around if that makes sense.
Re: Update Packs - Wanting to force update
I think the request would technically be to allow the Terminate Install command to return a value. That way, you can set up your script to return codes according to actions taken in the script.
This would allow the case for you to call the updater and it could run while your program waits for it. Granted, depending on what you're doing with the updates, this could cause problems (esp. if it tries to update your executable that's in use).
As a kind of work around to that for now, you could write the state to a text or ini file after you call the updater (e.g. if the updater ran, then you can write "updated" or if it didn't, write "no updates" or something like that)...
This would allow the case for you to call the updater and it could run while your program waits for it. Granted, depending on what you're doing with the updates, this could cause problems (esp. if it tries to update your executable that's in use).
As a kind of work around to that for now, you could write the state to a text or ini file after you call the updater (e.g. if the updater ran, then you can write "updated" or if it didn't, write "no updates" or something like that)...
Andy Mills
InstallAware
Other Help:
White Papers (HowTos) - http://www.installaware.com/publication ... papers.htm
Product Guides - http://www.installaware.com/publication ... guides.htm
InstallAware Help - Press F1 in the InstallAware IDE.
InstallAware
Other Help:
White Papers (HowTos) - http://www.installaware.com/publication ... papers.htm
Product Guides - http://www.installaware.com/publication ... guides.htm
InstallAware Help - Press F1 in the InstallAware IDE.
Re: Update Packs - Wanting to force update
Most of my updates would update the EXE so it would be a great feature to call setup.exe \updateavailable and have it return a value simply indicating one of the following:
0 - Update Available
1 - User Aboart (which really wouldn't happen in this case)
2 - Unavailable Update server
3 - No updates found
4 - reboot required (which really wouldn't happen in this case)
For now in this one test application I won't be able to use the technique you mentioned, because 90 percent of the time the application is spawned from MS AutoPlay. Unless I changed the Autoplay startup command to be the setup.exe /update. On this project I think I can live with updates being scheduled after every login which I have been able to successfully test.
Still the checking if an update is available progmatically versus forcing the update which will likely fail when the exe is open would be useful... unless some other innovative thinkers come up with another alternative.
0 - Update Available
1 - User Aboart (which really wouldn't happen in this case)
2 - Unavailable Update server
3 - No updates found
4 - reboot required (which really wouldn't happen in this case)
For now in this one test application I won't be able to use the technique you mentioned, because 90 percent of the time the application is spawned from MS AutoPlay. Unless I changed the Autoplay startup command to be the setup.exe /update. On this project I think I can live with updates being scheduled after every login which I have been able to successfully test.
Still the checking if an update is available progmatically versus forcing the update which will likely fail when the exe is open would be useful... unless some other innovative thinkers come up with another alternative.
Re: Update Packs - Wanting to force update
if i understand you right you want to check if updates are avialable bevor the scheduler runs that task (normally sundy 3:00). if so it is possible to simple start the windows scgedulartask directly with right mouse over the task (EXECUTE) so it starts directly to see if there is an update and loads it. You can do it from your application also ebcause there is a Windows API for that.

