Using Pre-4.6 MSI Packages with the App-V 4.6 Client

Using Pre-4.6 MSI Packages with the App-V 4.6 Client

The App-V 4.6 client has been tested extensively with pre-4.6 sequenced packages.

If you have 4.5 RTM packages which use MSI for deployment, then they will have to be updated (4.5 CU1 and SP1 MSIs are not affected by this). There are three ways to update your 4.5 RTM packages: 

  1. Use the MSI transform that we have placed on Microsoft Download Center.
  2. Use App-V 4.5 CU1/SP1 or App-V 4.6 Sequencer to open your package and generate a new MSI 
         a.    Open the package in “Edit a Package” mode on the 4.6 Sequencer
         b.    Select the  Deployment tab
         c.    Check the “Generate Microsoft Windows Installer (MSI) Package” option
         d.    Save package
  3. Use the App-V 4.6 Command-Line (CLI) Sequencer to overwrite your MSI with a new one: SFTSequencer /Open:"package.sprj" /MSI. You can get more information about opening a package in CLI here.

You could also write a batch script to convert multiple MSIs using option 1 and 3.

 

Examples of batch conversion using Windows PowerShell 2.0:

You can get the Windows PoweShell tool here.

Option 1: Using the transform

Filename: MsiTran_Apply_Transform.ps1

param (
   [string]$root
)
# Pass in the root location where all the *.msi exist

if (-not $root) {
   write-error "No root specified"
   return 1
}

$files = Get-ChildItem -Path $root -Recurse -Include *.msi
# Recursively search for all *.msi in $root

foreach ($file in $files) {
   Write-Host Operating on $file

   $p = Start-Process "\\bin\msitran.exe" -wait -PassThru -argumentlist "-a","\\launchcondition.mst","$($file.FullName)"

   if ($p.ExitCode -ne 0) {
      Write-Host "MSItran returned error code $($p.ExitCode) for $($file.FullName)"
   }

}

To run: \\MsiTran_Apply_Transform.ps1 C:\msi_test

This will run MsiTran_Apply_Transform.ps1 script with root parameter C:\msi_folder

 Option 2: Using the CLI

Filename: Sequencer_Open_msi.ps1

param (
   [string]$root
)
# Pass in the root location where all the *.sprj exist

if (-not $root) {
   write-error "no root specified"
   return 1
}

$files = Get-ChildItem -Path $root -Recurse -Include *.sprj
# Recursively search for all *.sprj in $root

foreach ($file in $files) {
   Write-Host Operating on $file
   start-process 'C:\Program Files\Microsoft Application Virtualization Sequencer\sftsequencer.exe' -wait -argumentlist "/open:""$($file.FullName)""","/msi"
   #Provide full path of sftsequencer.exe

   if ($? -ne "True") {
      Write-Host "Error while opening file on Command Line Sequencer"
   }
}

To run: .\Sequencer_Open_msi.ps1 C:\sprj_folder

This will run Sequencer_Open_msi.ps1 script with root parameter C:\sprj_folder

Note: For more information see http://blogs.technet.com/appv/archive/2010/02/25/how-to-use-pre-4-6-msi-packages-with-the-app-v-4-6-client.aspx.

Leave a Comment
  • Please add 6 and 8 and type the answer here:
  • Post
Wiki - Revision Comment List(Revision Comment)
Sort by: Published Date | Most Recent | Most Useful
Comments
  • Patris_70 edited Revision 2. Comment: deleted (en-US) title

  • Craig Lussier edited Revision 1. Comment: added en-US to tags and title

Page 1 of 1 (2 items)
Wikis - Comment List
Sort by: Published Date | Most Recent | Most Useful
Posting comments is temporarily disabled until 10:00am PST on Saturday, December 14th. Thank you for your patience.
Comments
  • Craig Lussier edited Revision 1. Comment: added en-US to tags and title

  • Patris_70 edited Revision 2. Comment: deleted (en-US) title

Page 1 of 1 (2 items)