New to AdminStudio
I'm new to AdminStudio and I am learning about custom actions in MSI's.
We are in the process of migrating from Zenworks to SMS. A lot of our Zen objects had dependencies which SMS doesn't handle as well.
I will use our Office 2003 standard install as the example. We have a Office 2003 install that calls several dependencies that run msiexec.exe /x {product GUID} to uninstall access 97, 2000, office 97, 2000, etc.
I would like to create a master msi that runs those msixec uninstall commands, installs another msi that includes our templates and then runs the Office install with a transform.
This was fairly easy with Wise, but I am struggling to figure it out with AdminStudio. Are custom actions the way to go? Can anyone give me some advice?
Thanks in advance, Jon
We are in the process of migrating from Zenworks to SMS. A lot of our Zen objects had dependencies which SMS doesn't handle as well.
I will use our Office 2003 standard install as the example. We have a Office 2003 install that calls several dependencies that run msiexec.exe /x {product GUID} to uninstall access 97, 2000, office 97, 2000, etc.
I would like to create a master msi that runs those msixec uninstall commands, installs another msi that includes our templates and then runs the Office install with a transform.
This was fairly easy with Wise, but I am struggling to figure it out with AdminStudio. Are custom actions the way to go? Can anyone give me some advice?
Thanks in advance, Jon
0 Comments
[ + ] Show comments
Answers (13)
Please log in to answer
Posted by:
KPrinz
17 years ago
Posted by:
jfarber
17 years ago
That's an interesting way to think about it, but I am just using Microsoft Office as an example of a Novell object that has many dependencies that call msiexec.exe to install or uninstall something. It could be any app, so while that might help with MS Office, what can I do about the other apps? Is it possible to call msiexec.exe /x or /i with a custom action or other way with Installshield and an msi?
Posted by:
jmcfadyen
17 years ago
ahh the world of ZFD yuck..
Once you get your head around these MSi's you wont think Zenworks was quite so easy.
the "best practice" for removing MSI's is to use the upgrade table.
MSI has a built in function of upgrades which allows the uninstallation of other applications.
Each application has a product code and upgrade code which identifies the application.
You can tell your new package to lookup the upgrade code for old applications and do either
full uninstall of previous product then install new
or
partial uninstall and partial install of new product
the later is considerably harder to achieve and requires much more understanding of windows installer, conflict management, component reference counting and sequencing.
check out the SDK lookup upgrade code and upgrade table.
I would recommend whilst you are learning the topic of upgrade to sequence the RemoveRelatedProducts action right up next to the FindRelatedProducts action.
John
Once you get your head around these MSi's you wont think Zenworks was quite so easy.
the "best practice" for removing MSI's is to use the upgrade table.
MSI has a built in function of upgrades which allows the uninstallation of other applications.
Each application has a product code and upgrade code which identifies the application.
You can tell your new package to lookup the upgrade code for old applications and do either
full uninstall of previous product then install new
or
partial uninstall and partial install of new product
the later is considerably harder to achieve and requires much more understanding of windows installer, conflict management, component reference counting and sequencing.
check out the SDK lookup upgrade code and upgrade table.
I would recommend whilst you are learning the topic of upgrade to sequence the RemoveRelatedProducts action right up next to the FindRelatedProducts action.
John
Posted by:
e40
17 years ago
ORIGINAL: KPrinz
You could detect installed apps and then run the uninstall, but in this case: Nevermind that.
Instead, use the Office Resource Kit to create your mst and there you can specify in detail how office install handles previous versions (keep or remove).
I'll second this. We went from Office 97 to Office 2003 and all I did was create the MST using the Office Resource Kit and that handled everything, without a hitch.
Posted by:
jfarber
17 years ago
That will help with Office, but I was just using that as an example. What about other programs? I'll use our Adobe CS2 package for the next example. We have the Novell object call a series of dependencies that uninstalls previous versions. They call msiexec.exe /x and the GUID. Can I have an msi call with custom actions or whatever else, a msiexec.exe command to uninstall or install prereqs.
Thanks.
Thanks.
Posted by:
Tone
17 years ago
Adobe CS2 should take care of previous version, for repackaged applications you can create a major upgrade by changing the product code and version, add populate the upgrade table, if vendor msi's dont have the upgrade table populted you can use a tranform.
http://msdn2.microsoft.com/en-us/library/aa369786.aspx
http://msdn2.microsoft.com/en-us/library/aa369786.aspx
Posted by:
jfarber
17 years ago
Posted by:
Tone
17 years ago
You can create nested MSI but its something I have always avoided as it can become a very convoluted process and you can lose control of your installs..
http://support.microsoft.com/kb/306439
On a side note have you created your SMS advertisments and packages in the order you want them to be installed as well as setting priorities, this should help with dependent applications.
http://support.microsoft.com/kb/306439
On a side note have you created your SMS advertisments and packages in the order you want them to be installed as well as setting priorities, this should help with dependent applications.
Posted by:
jfarber
17 years ago
I think your right about nested MSI's, that doesn't look like the way to do it.
I would like to do with Installshield what I did with Wise Package Studio.
With Wisescript editor I would have the following commands ran:
msiexec.exe /x {GUID} WAIT
msiexec.exe /x {GUID} WAIT
msiexec.exe /i path transforms=etc WAIT
I could also run other commands, etc...
The wait is a wise command to wait for the step to finish before continuing.
Can Installshield do this?
I would like to do with Installshield what I did with Wise Package Studio.
With Wisescript editor I would have the following commands ran:
msiexec.exe /x {GUID} WAIT
msiexec.exe /x {GUID} WAIT
msiexec.exe /i path transforms=etc WAIT
I could also run other commands, etc...
The wait is a wise command to wait for the step to finish before continuing.
Can Installshield do this?
Posted by:
Tone
17 years ago
You should be able to that with installshield script but you wouldnt be able to do it with a standard msi (I also avoid wise\installshield script)
If you used the updgrade table you would be able to remove all previous version of an application before you package installs.. and just use custom actions to carry out command that cannot done using standard actions
Pretty similar to
msiexec.exe /x {MyAppVersion_v1.1}
msiexec.exe /x {MyAppVersion_v2.2}
msiexec.exe /i path transforms=etc
If you used the updgrade table you would be able to remove all previous version of an application before you package installs.. and just use custom actions to carry out command that cannot done using standard actions
Pretty similar to
msiexec.exe /x {MyAppVersion_v1.1}
msiexec.exe /x {MyAppVersion_v2.2}
msiexec.exe /i path transforms=etc
Posted by:
jfarber
17 years ago
Posted by:
jmcfadyen
17 years ago
incorrect.
MST will work fine for upgrades.
all an MST is, is simply an overlay for database tables / values.
when an installation is run with an MST all values in the tables are simply updated with new values from the MST.
from a table perspective there is no MST.
from an MSI perspective having a transform simply means there is a merge process which runs to blend the two together and an additional file to cache in the installer cache, slightly different meta data written.
upgrades are your best option in this scenario dont use nested CA's if you can avoid it.
MST will work fine for upgrades.
all an MST is, is simply an overlay for database tables / values.
when an installation is run with an MST all values in the tables are simply updated with new values from the MST.
from a table perspective there is no MST.
from an MSI perspective having a transform simply means there is a merge process which runs to blend the two together and an additional file to cache in the installer cache, slightly different meta data written.
upgrades are your best option in this scenario dont use nested CA's if you can avoid it.
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.