我正在使用Visual Studio2008,并且已经为我的应用程序创建了一个安装项目。该应用程序有一个高分辨率图标(用于Vista)。Visual Studio中有一个错误,安装程序会创建一个带有低分辨率图标的桌面快捷方式。
我在Microsoft Connect (https://connect.microsoft.com/VisualStudio/feedback/ViewFeedback.aspx?FeedbackID=338258)中记录了这个错误,最终得到了一个答案,那就是使用Orca编辑msi文件并替换图标。该解决方案运行良好。
现在,我希望自动执行该过程,以便可以将其包含在构建脚本中。有没有办法做到这一点?
发布于 2009-05-20 08:54:45
您可以编写VBS、JS (使用cscript,它内置在每个Windows中)来修改MSI,其语法非常类似于SQL。Here is a MSDN page that shows various examples.
发布于 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的需要。
发布于 2010-05-14 18:53:33
我也不得不这么做--这是我的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
此脚本将MSI数据库中的所有快捷方式图标替换为一个图标-如果您需要进行选择,则需要做更多工作。
https://stackoverflow.com/questions/886842
复制相似问题