首页
学习
活动
专区
工具
TVP
发布
社区首页 >问答首页 >使用Orca从命令行编辑msi?

使用Orca从命令行编辑msi?
EN

Stack Overflow用户
提问于 2009-05-20 08:35:43
回答 5查看 14.4K关注 0票数 20

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

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

现在,我希望自动执行该过程,以便可以将其包含在构建脚本中。有没有办法做到这一点?

EN

回答 5

Stack Overflow用户

回答已采纳

发布于 2009-05-20 08:54:45

您可以编写VBS、JS (使用cscript,它内置在每个Windows中)来修改MSI,其语法非常类似于SQL。Here is a MSDN page that shows various examples.

票数 12
EN

Stack Overflow用户

发布于 2010-06-18 01:03:13

我找到的最简单的解决方案可能是在Orca中创建一个新的“转换”,然后将转换作为构建后步骤的一部分进行应用。

1)使用ORCA打开MSI文件进行编辑。2)单击"New transform“3)使用Orca编辑器对MSI表进行所有适用的更改。4)点击[Generate transform],保存文件。5)编辑您的构建事件以在构建后步骤中执行msitran。像这样..。

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

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

一旦您的安装程序构建完成,这将自动将您的编辑应用到MSI文件,从而消除对自定义VBScript的需要。

票数 38
EN

Stack Overflow用户

发布于 2010-05-14 18:53:33

我也不得不这么做--这是我的VBScript文件(以防它对任何人有用)……

代码语言:javascript
复制
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

此脚本将MSI数据库中的所有快捷方式图标替换为一个图标-如果您需要进行选择,则需要做更多工作。

票数 7
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/886842

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档