/build/static/layout/Breadcrumb_cap_w.png

MSI & MST

Is there a way to combine both msi & mst into one single msi. I tried it using ORCA but not all the changes i made were saved. is there any other tool to use?

Giz

0 Comments   [ + ] Show comments

Answers (13)

Posted by: turbokitty 17 years ago
6th Degree Black Belt
0
Installshield claims that it can do this, although I've never tried. You can download the trial... you just need the Editor.
Posted by: aogilmor 17 years ago
9th Degree Black Belt
0
do you mean the "save tranformed as.." didn't work? I just did a test OK with my msi (orca v 3.1) and it seemed to save the changes OK but I ended up with a much smaller mSI and got a cab error when installing. do some reading on how Orca handles source files, and also make sure you're not opening up your original MSI as read only.
Posted by: aogilmor 17 years ago
9th Degree Black Belt
0
here's how I did it: in orca (v 3.1) , go to tools/options/database tab, make sure the "copy embedded streams during Save As" box is checked.

Then save your transformed MSI.

let me know if this works.
Posted by: gizmolala 17 years ago
Third Degree Blue Belt
0
tnx. the version of ORCA i have is V2.0. PLS where can i get the v3.1?

Giz
Posted by: gizmolala 17 years ago
Third Degree Blue Belt
0
Got the download of microsoft website. Will try it and live feedback.

Giz
Posted by: spartacus 17 years ago
Black Belt
0
If you've gone to the trouble of downloading the full Platform SDK rather than just ORCA, then you could also combine MSI's with MST's using the script WiUseXfm.vbs provided by the SDK.

http://windowssdk.msdn.microsoft.com/en-us/library/ms700432.aspx


Regards,

Spartacus
Posted by: gizmolala 17 years ago
Third Degree Blue Belt
0
Got an error during saving using ORCA V3.1.

ERROR says " The msi contains at least one embedded substorage which cannot be copied to the new package. You'll need to manually import these substorages into the new file".

How do i know the substorages that were not copied? and SPARTACUS i can't hold of the script at the sight u gave.

Giz
Posted by: spartacus 17 years ago
Black Belt
0
The link I posted was just for information not the actual download link itself. You need to locate and download the full Windows Server 2003 Platform SDK (overkill, I know), then the WiUseXfm.vbs will have been installed to

C:\Program Files\Microsoft Platform SDK\Samples\SysMgmt\Msi\Scripts

by default.

Not sure whether it's permissible to cut and paste a piece of Microsoft's own script code in this forum, otherwise I would ...

Regards,

Spartacus
Posted by: aogilmor 17 years ago
9th Degree Black Belt
0
i"ve installed all the sdk tools at one time or another. sparty's right, have a look at the scripts, look at makemsi and other utils (makecab.exe i think is another). there's a lot you can do with scripts but they're not real user friendly ime (that's why wise costs so much! [;)] )
Posted by: aogilmor 17 years ago
9th Degree Black Belt
0
check out this microsoft link in addition to spartacus's good info. this deals with substorage of binaries, which i suspect might be your issue here.
Posted by: turbokitty 17 years ago
6th Degree Black Belt
0
ORIGINAL: spartacus
The link I posted was just for information not the actual download link itself. You need to locate and download the full Windows Server 2003 Platform SDK (overkill, I know), then the WiUseXfm.vbs will have been installed to



Bah, why not? The copyright info is in there (cringing, waiting for Bob to send down a lightning bolt).

---------------------------------------------------

' Windows Installer utility to applay a transform to an installer database
' For use with Windows Scripting Host, CScript.exe or WScript.exe
' Copyright (c) Microsoft Corporation. All rights reserved.
' Demonstrates use of Database.ApplyTransform and MsiDatabaseApplyTransform
'
Option Explicit

' Error conditions that may be suppressed when applying transforms
Const msiTransformErrorAddExistingRow = 1 'Adding a row that already exists.
Const msiTransformErrorDeleteNonExistingRow = 2 'Deleting a row that doesn't exist.
Const msiTransformErrorAddExistingTable = 4 'Adding a table that already exists.
Const msiTransformErrorDeleteNonExistingTable = 8 'Deleting a table that doesn't exist.
Const msiTransformErrorUpdateNonExistingRow = 16 'Updating a row that doesn't exist.
Const msiTransformErrorChangeCodePage = 256 'Transform and database code pages do not match

Const msiOpenDatabaseModeReadOnly = 0
Const msiOpenDatabaseModeTransact = 1
Const msiOpenDatabaseModeCreate = 3

If (Wscript.Arguments.Count < 2) Then
Wscript.Echo "Windows Installer database tranform application utility" &_
vbNewLine & " 1st argument is the path to an installer database" &_
vbNewLine & " 2nd argument is the path to the transform file to apply" &_
vbNewLine & " 3rd argument is optional set of error conditions to suppress:" &_
vbNewLine & " 1 = adding a row that already exists" &_
vbNewLine & " 2 = deleting a row that doesn't exist" &_
vbNewLine & " 4 = adding a table that already exists" &_
vbNewLine & " 8 = deleting a table that doesn't exist" &_
vbNewLine & " 16 = updating a row that doesn't exist" &_
vbNewLine & " 256 = mismatch of database and transform codepages" &_
vbNewLine &_
vbNewLine & "Copyright (C) Microsoft Corporation. All rights reserved."
Wscript.Quit 1
End If

' Connect to Windows Installer object
On Error Resume Next
Dim installer : Set installer = Nothing
Set installer = Wscript.CreateObject("WindowsInstaller.Installer") : CheckError

' Open database and apply transform
Dim database : Set database = installer.OpenDatabase(Wscript.Arguments(0), msiOpenDatabaseModeTransact) : CheckError
Dim errorConditions:errorConditions = 0
If Wscript.Arguments.Count >= 3 Then errorConditions = CLng(Wscript.Arguments(2))
Database.ApplyTransform Wscript.Arguments(1), errorConditions : CheckError
Database.Commit : CheckError

Sub CheckError
Dim message, errRec
If Err = 0 Then Exit Sub
message = Err.Source & " " & Hex(Err) & ": " & Err.Description
If Not installer Is Nothing Then
Set errRec = installer.LastErrorRecord
If Not errRec Is Nothing Then message = message & vbNewLine & errRec.FormatText
End If
Wscript.Echo message
Wscript.Quit 2
End Sub
Posted by: bkelly 17 years ago
Red Belt
0
Properly credited like this I have no problem with script code being quoted in a forum post- thanks for helping (yet again!)
Posted by: danr29 17 years ago
Purple Belt
0
The Windows Installer SDK also includes a command-line utility for merging an .mst into an .msi. It's called msitran.exe and is located within the folder that the SDK creates when installed. Use the msitran.exe /? for info on the proper command line to use. I use it often and it works great.
Rating comments in this legacy AppDeploy message board thread won't reorder them,
so that the conversation will remain readable.
 
This website uses cookies. By continuing to use this site and/or clicking the "Accept" button you are providing consent Quest Software and its affiliates do NOT sell the Personal Data you provide to us either when you register on our websites or when you do business with us. For more information about our Privacy Policy and our data protection efforts, please visit GDPR-HQ