使用Orca从命令行编辑msi?

Dan*_*elR 18 icons windows-installer orca visual-studio-2008

我正在使用Visual Studio 2008并为我的应用程序创建了一个安装项目.该应用程序具有高分辨率图标(适用于Vista).Visual Studio中存在一个错误,安装程序会创建一个带有低分辨率图标的桌面快捷方式.

我在Microsoft Connect(https://connect.microsoft.com/VisualStudio/feedback/ViewFeedback.aspx?FeedbackID=338258)中记录了这个错误,最后得到了一个答案,即使用Orca编辑msi文件并替换图标.解决方案很好.

现在我想自动化该过程,所以我可以将它包含在我的构建脚本中.有没有办法做到这一点?

Gri*_*are 37

可能我发现的最简单的解决方案是在Orca中创建一个新的"Transform",然后将转换应用为我的构建后步骤的一部分.

1)使用ORCA打开MSI文件进行编辑.2)单击"新变换"3)使用Orca编辑器对MSI表进行所有适用的更改.4)单击"生成变换",然后保存文件.5)编辑构建事件以在构建后步骤中执行msitran.像这样...

msitran -a(转换文件的路径)(MSI文件的路径)

有关MSITran.exe的更多信息可以在以下位置找到... MSITran

一旦安装程序构建完成,这将自动将您的编辑应用于MSI文件,从而无需自定义VBScript.


Sha*_*men 11

您可以编写VBS,JS(使用cscript,内置于每个Windows)来修改MSI,语法几乎就像SQL一样. 这是一个显示各种示例的MSDN页面.


Dav*_*ray 7

我也必须这样做 - 这是我的VBScript文件(如果它对任何人都有用)......

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
Run Code Online (Sandbox Code Playgroud)

此脚本使用单个图标替换MSI数据库中的所有快捷方式图标 - 如果您需要有选择性,那么您还需要做更多工作.