Build a "Global Install" from multiple packages.
Hello !
Thanks to you, I have almost built the packages I have to build.
There are 3 packages :
1 for the driver (i.e : exe, inf and sys)
1 for an app using this driver (exe and dlls)
1 for some extra files which can be used by the app. (dll, ini and some data files)
People can download them separatly, but I would like to build a "Global package" which is based on these 3, in order that the user doesn't need to download and run 3 packages but just one.
However, I don't want to build a "new" package, I would like to build "something" which use the packages I have already built, in order that, in the future, we don't have to modify the global package if we modify one of the three packages (Of course, we'll have to rebuild the global package, but not modify it.)
I thought about nested install, but I want (erhh, my team wants...) that once the global package is installed, the user be able to remove products separatly...
Then, I thought about an auto-extractable file which automatically launch the first package, or a "start package". But I don't know how to build that :-/
So I need your help. If you have any suggestion or questions about it... just tell me !
Important (?) : The three packages have a ForceReboot action (conditionned by some parameters) and/or Scheduled action. Maybe it is important for you to know...
Thanks to you, I have almost built the packages I have to build.
There are 3 packages :
1 for the driver (i.e : exe, inf and sys)
1 for an app using this driver (exe and dlls)
1 for some extra files which can be used by the app. (dll, ini and some data files)
People can download them separatly, but I would like to build a "Global package" which is based on these 3, in order that the user doesn't need to download and run 3 packages but just one.
However, I don't want to build a "new" package, I would like to build "something" which use the packages I have already built, in order that, in the future, we don't have to modify the global package if we modify one of the three packages (Of course, we'll have to rebuild the global package, but not modify it.)
I thought about nested install, but I want (erhh, my team wants...) that once the global package is installed, the user be able to remove products separatly...
Then, I thought about an auto-extractable file which automatically launch the first package, or a "start package". But I don't know how to build that :-/
So I need your help. If you have any suggestion or questions about it... just tell me !
Important (?) : The three packages have a ForceReboot action (conditionned by some parameters) and/or Scheduled action. Maybe it is important for you to know...
0 Comments
[ + ] Show comments
Answers (15)
Please log in to answer
Posted by:
WiseUser
19 years ago
Posted by:
babric
19 years ago
No, I didn't read it, but I just finished to do it, and... I don't understand how I could use it :-)
I'm new in packaging and not really familiar with setup.exe and setup.ini files. Moreover, it seems to be Office2003 specific ? Could I do the same with my own setup.exe ? Does a setup.exe always look at the setup.ini if it founds one in the same directory ?
Last remark : I won't deploy my package using CD-ROM, but using the Web. So I have to build a All-in-one file : The user would just have to double click on it.
Again, I'm new in packaging and don't know a lot of things, so I'm sorry if your Link was the solution and I didn't undestand it. I'll try to find some informations using "chained install" or "chained package" as keyword :-)
I'm new in packaging and not really familiar with setup.exe and setup.ini files. Moreover, it seems to be Office2003 specific ? Could I do the same with my own setup.exe ? Does a setup.exe always look at the setup.ini if it founds one in the same directory ?
Last remark : I won't deploy my package using CD-ROM, but using the Web. So I have to build a All-in-one file : The user would just have to double click on it.
Again, I'm new in packaging and don't know a lot of things, so I'm sorry if your Link was the solution and I didn't undestand it. I'll try to find some informations using "chained install" or "chained package" as keyword :-)
Posted by:
babric
19 years ago
I didn't found anything really insteresting... :-(
But, I'm looking for a new way :
1 auto-extractable zip file which automatically launch a "launcher.msi" .
This package will launch, using some CA, the first package (pack1.msi) with the property GLOBALINSTALL set to "1". At the end of the install of the first package, a CA (conditionned by GLOBALINSTALL=1) will launch the second one, etc... .
Maybe not the best solution, but do you think that it could work ? (before I begin to spend time on it :-) )
But, I'm looking for a new way :
1 auto-extractable zip file which automatically launch a "launcher.msi" .
This package will launch, using some CA, the first package (pack1.msi) with the property GLOBALINSTALL set to "1". At the end of the install of the first package, a CA (conditionned by GLOBALINSTALL=1) will launch the second one, etc... .
Maybe not the best solution, but do you think that it could work ? (before I begin to spend time on it :-) )
Posted by:
TomB
19 years ago
I would stay away from using an MSI as your stub launcher.
I would suggest you create your own EXE to run the 3 msi files, one after the other. You can then use either winzip or winrar to compress the 3 msi files and the setup.exe into a single extrable file. Using those application you can even have it launch the Setup.exe once extracted so it is seemless to the users.
If you do not like WiseUser suggstion on the office setup.exe and ini file you can create your own.
I would suggest either SMS installer or AutoIt. Both allow you to easly create an EXE file that will call an external program, in this case MSIEXEC. You can then pass it parameters such as "/qb /i file.msi /l*v c:\temp\file.log".
AutoIt is free and very useful. It is its own scripting language, but it also porvides you the option to convert your script to an EXE.
http://www.autoitscript.com/autoit3/
I would suggest you create your own EXE to run the 3 msi files, one after the other. You can then use either winzip or winrar to compress the 3 msi files and the setup.exe into a single extrable file. Using those application you can even have it launch the Setup.exe once extracted so it is seemless to the users.
If you do not like WiseUser suggstion on the office setup.exe and ini file you can create your own.
I would suggest either SMS installer or AutoIt. Both allow you to easly create an EXE file that will call an external program, in this case MSIEXEC. You can then pass it parameters such as "/qb /i file.msi /l*v c:\temp\file.log".
AutoIt is free and very useful. It is its own scripting language, but it also porvides you the option to convert your script to an EXE.
http://www.autoitscript.com/autoit3/
Posted by:
VikingLoki
19 years ago
You don't need a zip file, this should fit the bill perfectly. The Launcher.msi can be an empty MSI, except possibly for some special dialogs. The dialogs would consist of checkboxes for MSI1, MSI2 and MSI3, which in turn would set properties named InstallMSI1, InstallMSI2 and InstallMSI3. (but that's not necessary if you want to force all 3 MSIs to be installed)
Imbed MSI1, MSI2 and MSI3 in the Binary table of the launcher.msi (which creates your single file download) and launch them by condition in your MSI script just before InstallFinalize in Execute Deferred. If you made each MSI selectable in the dialog, then add a condition. If InstallMSI1 then... etc. Since MSI1, MSI2 and MSI3 are actually installed by 3 individual MSI's, they are individually removable and/or upgradable.
In Wise, this is done with the "Install MSI from Installation" custom action.
You may want to be thorough and put in a CA, or a command in the RunOnce reg key to uninstall your launcher as it will appear in add/remove programs.
Imbed MSI1, MSI2 and MSI3 in the Binary table of the launcher.msi (which creates your single file download) and launch them by condition in your MSI script just before InstallFinalize in Execute Deferred. If you made each MSI selectable in the dialog, then add a condition. If InstallMSI1 then... etc. Since MSI1, MSI2 and MSI3 are actually installed by 3 individual MSI's, they are individually removable and/or upgradable.
In Wise, this is done with the "Install MSI from Installation" custom action.
You may want to be thorough and put in a CA, or a command in the RunOnce reg key to uninstall your launcher as it will appear in add/remove programs.
Posted by:
babric
19 years ago
Thank you TomB and VikingLoki for your answers.
Viking's solution was the one I thought about, but there is something which could be a problem :
The installation of my first package could require to reboot (using ForceReboot action) so, after the reboot, the install ends, but the launch package has been closed by the reboot ! So I should store in the RunOnce Key the path to launch package ?
Does this could be a problem (because of 2 package have to run after the reboot, how to know which one will be the first ?)
Hope you understand what I mean :-)
Same problem with your solution tomB, I think I should run the EXE after the reboot ?
Viking's solution was the one I thought about, but there is something which could be a problem :
The installation of my first package could require to reboot (using ForceReboot action) so, after the reboot, the install ends, but the launch package has been closed by the reboot ! So I should store in the RunOnce Key the path to launch package ?
Does this could be a problem (because of 2 package have to run after the reboot, how to know which one will be the first ?)
Hope you understand what I mean :-)
Same problem with your solution tomB, I think I should run the EXE after the reboot ?
Posted by:
VikingLoki
19 years ago
If the remaining packages can be installed without a reboot after the 1st one, then set the Reboot property to Force in your launcher, and set to ReallySupress when launching each of the 3 packages. (This can be done by adding REBOOT="ReallySupress" to the MSIEXEC command line if you want them to reboot if installed individually.)
If you must reboot after the 1st one, then it gets complicated. You'll need to set an "in progress" flag somewhere, have the MSI relaunch on reboot and add logic so that it jumps right into a continued install if the "in progress" flag is found. Then proceed with your clean-up.
If you must reboot after the 1st one, then it gets complicated. You'll need to set an "in progress" flag somewhere, have the MSI relaunch on reboot and add logic so that it jumps right into a continued install if the "in progress" flag is found. Then proceed with your clean-up.
Posted by:
plangton
19 years ago
Hi TomB and everyone else,
There is another free tool which compresses stuff inside a .EXE an executes a file - iexpress.exe, which is part of the IEAK (Internet Explorers Administrators Kit) - I use it all the time for stuff like this, simply have 3 MSI files and a VBS that runs them all, Run iexpress.exe pack the MSI files and the .VBS in there and make the execute command wscript.exe <nameofvbsfile> and Bobs Yer Uncle :)
Hope thats helped.
Paul
There is another free tool which compresses stuff inside a .EXE an executes a file - iexpress.exe, which is part of the IEAK (Internet Explorers Administrators Kit) - I use it all the time for stuff like this, simply have 3 MSI files and a VBS that runs them all, Run iexpress.exe pack the MSI files and the .VBS in there and make the execute command wscript.exe <nameofvbsfile> and Bobs Yer Uncle :)
Hope thats helped.
Paul
Posted by:
plangton
19 years ago
Hi VikingLoki,
Actually MSI's already have something set up for having a reboot half way through your install (though I've never tried it, I was recently reading up on it). Use the After reboot property:
From http://msdn.microsoft.com/library/default.asp?url=/library/en-us/msi/setup/afterreboot.asp:
The installer sets the AFTERREBOOT property to 1 after a reboot invoked by the ForceReboot action. The installer adds AFTERREBOOT=1 to the command line run immediately after the reboot.
So if you set your 2 other custom actions to require that property set, they should run after reboot.
Hope that helps
Paul
Actually MSI's already have something set up for having a reboot half way through your install (though I've never tried it, I was recently reading up on it). Use the After reboot property:
From http://msdn.microsoft.com/library/default.asp?url=/library/en-us/msi/setup/afterreboot.asp:
The installer sets the AFTERREBOOT property to 1 after a reboot invoked by the ForceReboot action. The installer adds AFTERREBOOT=1 to the command line run immediately after the reboot.
So if you set your 2 other custom actions to require that property set, they should run after reboot.
Hope that helps
Paul
Posted by:
babric
19 years ago
Plangton :
Thank you for this tool I didn't know. I tried it and... I have a problem :-/
I launch the first of my 3 packages using iexpress.exe. During the installation of my first package, if there is an old version installed, there is ALWAYS a reboot BEFORE the end of the installExecuteSequence.
And the problem is that iexpress.exe, thinking that my app ended (whereas it is just ending to reboot), cleans the folder of the files it uncompressed...
So, after the reboot, the runOnce key has a path which not exists (because files have been removed).
One solution would be to use a VbScript and move the files before it removes them, but I can't launch any vbScript using iexpress.exe... :-)
EDIT : It works using some .CMD or .BAT files...
Thank you for this tool I didn't know. I tried it and... I have a problem :-/
I launch the first of my 3 packages using iexpress.exe. During the installation of my first package, if there is an old version installed, there is ALWAYS a reboot BEFORE the end of the installExecuteSequence.
And the problem is that iexpress.exe, thinking that my app ended (whereas it is just ending to reboot), cleans the folder of the files it uncompressed...
So, after the reboot, the runOnce key has a path which not exists (because files have been removed).
One solution would be to use a VbScript and move the files before it removes them, but I can't launch any vbScript using iexpress.exe... :-)
EDIT : It works using some .CMD or .BAT files...
Posted by:
VikingLoki
19 years ago
Posted by:
BobTheBuilder
19 years ago
Posted by:
plangton
19 years ago
Posted by:
babric
19 years ago
Posted by:
sini
19 years ago
You can force a reboot after the first msi got installed and then utilize Activesetup to start the installation up again. After the reboot you could for example start the installation with a public property like InstallMSI1="Installed" or something like that so that you msi knows it already installed the first one!
Rating comments in this legacy AppDeploy message board thread won't reorder them,
so that the conversation will remain readable.
so that the conversation will remain readable.