Admin installs, transforms and reinstalling
I would typically create an admin install of a vendor MSI and apply a transform to include all of my customizations.
Lets say that I then would need to change the contents of my transform and this would need to be applied to everyone who has the software installed.
As I understand, the general rule is that when you have made a change to your transform and you want there changes to take effect on the users workstation (including future repairs), you are required to remove the software from the users PC and then install again using the new transform.
Is there a better way of doing this? Maybe using the transform in the command line when creating the admin install?
Lets say that I then would need to change the contents of my transform and this would need to be applied to everyone who has the software installed.
As I understand, the general rule is that when you have made a change to your transform and you want there changes to take effect on the users workstation (including future repairs), you are required to remove the software from the users PC and then install again using the new transform.
Is there a better way of doing this? Maybe using the transform in the command line when creating the admin install?
0 Comments
[ + ] Show comments
Answers (5)
Please log in to answer
Posted by:
jmcfadyen
17 years ago
there is another way wether its better is quite debateable.
replacing the transform in the cache and forcing a repair seems to work. Whether people use this often or not is a different story. It works but I dont know if its a good thing to do or not.
general approach is uninstall reinstall or patch.
replacing the transform in the cache and forcing a repair seems to work. Whether people use this often or not is a different story. It works but I dont know if its a good thing to do or not.
general approach is uninstall reinstall or patch.
Posted by:
AngelD
17 years ago
At my last project (in a 30.000 sized environment) we did use the same approach as John mentioned quite often.
Replace the cached transform and doing a reinstall (or forcing a repair) is a faster way to apply the changes rather then uninstall and install the whole application again. You wouldn't want to uninstall and install the application if it takes like 1 hour preventing the user from using their computer rather then making reinstall/repair doing its work.
We used SMS for deployment and hade a vbscript that would replace the cached transform and trigger the repair (REINSTALL=ALL REINSTALLMODE=vomus). The script would also kill any process related to the application before doing this event to prevent files inuse.
Replace the cached transform and doing a reinstall (or forcing a repair) is a faster way to apply the changes rather then uninstall and install the whole application again. You wouldn't want to uninstall and install the application if it takes like 1 hour preventing the user from using their computer rather then making reinstall/repair doing its work.
We used SMS for deployment and hade a vbscript that would replace the cached transform and trigger the repair (REINSTALL=ALL REINSTALLMODE=vomus). The script would also kill any process related to the application before doing this event to prevent files inuse.
Posted by:
Cybermage
17 years ago
Posted by:
AngelD
17 years ago
msiGetCachedTransform.vbs
Option Explicit
On Error Resume Next
Const ProductCode = "{59C9A627-5F4A-47c4-94FD-9A886F5AC971}"
Dim Installer : Set Installer = Nothing
Set Installer = CreateObject("WindowsInstaller.Installer")
If Not IsProductInstalled(ProductCode) Then Wscript.Quit
Dim ProductName : ProductName = Installer.ProductInfo(ProductCode, "InstalledProductName")
Dim InstallSource : InstallSource = Installer.ProductInfo(ProductCode, "LocalPackage")
Dim Transforms : Transforms = Installer.ProductInfo(ProductCode, "Transforms")
WScript.Echo "Product Name: " & ProductName
WScript.Echo "Cached package: " & InstallSource
WScript.Echo "Cached Transforms: " & Transforms
Set Installer = Nothing
Wscript.Quit(0)
Function IsProductInstalled(ProductCode)
IsProductInstalled = False
Dim ProductState : ProductState = Installer.ProductState(ProductCode)
If ProductState <> 5 Then
Wscript.Echo "Product not installed (ProductState return: " & ProductState & ")"
Wscript.Echo "Please check the ProductCode"
Exit Function
End If
IsProductInstalled = True
End Function
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.