Use Orca to edit msi from command line?

前端 未结 5 1590
我寻月下人不归
我寻月下人不归 2020-12-08 03:20

I\'m using Visual Studio 2008 and have created a setup project for my application. The application has a high-resolution icon (for Vista). There\'s a bug in Visual Studio, a

相关标签:
5条回答
  • 2020-12-08 03:33

    I just had to do this too - here is my VBScript file (in case it's useful to anyone)...

    Dim msiInstaller
    Dim msiDatabase
    Dim msiView
    Dim msiRecord
    
    Dim pathToMsiFile
    Dim pathToIconFile
    
    If WScript.Arguments.Count <> 2 Then
        WScript.Echo "Usage:" & vbCrLf & "  " & WScript.ScriptName & " <path-to-msi> <path-to-icon>"
        WScript.Quit
    End If
    
    Dim pathToMsi, pathToIcon
    pathToMsi = WScript.Arguments(0)
    pathToIcon = WScript.Arguments(1)
    
    Set msiInstaller = CreateObject("WindowsInstaller.Installer")
    
    Set msiRecord = msiInstaller.CreateRecord(1)
    msiRecord.SetStream 1, pathToIcon
    
    Set msiDatabase = msiInstaller.OpenDatabase(pathToMsi, 1)
    Set msiView = msiDatabase.OpenView("UPDATE Icon SET Data = ? WHERE Name <> ''")
    msiView.Execute msiRecord
    
    msiDatabase.Commit
    

    This script replaces all shortcut icons in the MSI database with a single icon - if you need to be selective then you have some more work to do.

    0 讨论(0)
  • 2020-12-08 03:44

    You can write VBS, JS (using cscript, which is built in with every Windows) to modify the MSI, the syntax is pretty much SQL like. Here is a MSDN page that shows various examples.

    0 讨论(0)
  • 2020-12-08 03:44

    Since you're used to work with Orca, just save the modifications as a transform file using Orca and then applying it with 'msitran' in the post build event of your setup project.
    I'm using this in a setup project and it works just great.

    0 讨论(0)
  • 2020-12-08 03:50

    Possibly the easiest solution that I found for this was to create a new "Transform" inside of Orca, and then to apply the transform as a part of my post-build steps.

    1) Open the MSI file using ORCA for editing. 2) Click on "New transform" 3) Make all of the applicable changes to your MSI tables using the Orca editor. 4) Click on "Generate transform", and save the file. 5) Edit your build events to execute msitran during the post-build step. like this...

    msitran -a (path to transform file) (path to MSI file)

    More information about MSITran.exe can be found at the following location... MSITran

    This will automatically apply your edits to the MSI file once your installer build has completed, eliminating the need for custom VBScript.

    0 讨论(0)
  • 2020-12-08 03:58

    You can use perl script to modify the installer msi package. You can use Win32 OLE for this. Open the MSI using Win32::OLE->new API. Open the MSI database and execute the SQL queries to do the update.

    This perl script can be used in builds.

    This link might help you to write the required one.

    0 讨论(0)
提交回复
热议问题