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?
0 Comments   [ - ] Hide Comments


Please log in to comment

Rating comments in this legacy AppDeploy message board thread won't reorder them,
so that the conversation will remain readable.
Answer this question or Comment on this question for clarity


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.
Answered 08/26/2007 by: jmcfadyen
Fifth Degree Black Belt

Please log in to comment
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.
Answered 08/27/2007 by: AngelD
Red Belt

Please log in to comment
Thanks for your answers. Much appreciated.
Answered 08/27/2007 by: michaelnowell
Second Degree Blue Belt

Please log in to comment
Oke the posts looks clear to me, but where can i find a cached transform on the workstation? %temp% or somewhere else?
Answered 08/29/2007 by: Cybermage
Orange Belt

Please log in to comment
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

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
Answered 08/29/2007 by: AngelD
Red Belt

Please log in to comment