我需要一个可能非常简单的解决方案 - 更新MSI属性。我们有许多在TFS 2012中受源控制的WiX项目,我们通过TeamCity构建配置生成相关的MSI以进行部署,这些配置通常构建所需的* .wixproj文件。
在TFS / Visual Studio中更新MSI属性根本不是一个可供选择的选项,因为我们需要将我们的更改限制在TeamCity中,因为我们当前已经设置了整个持续集成和部署过程。
我希望实现的是一个解决方案,我可以运行脚本或命令来在创建后更新所需的MSI属性。我将欢迎使用Powershell,Perl,VBScript,Windows Batch脚本等任何脚本或命令的解决方案,因为这将被设置为最终的TeamCity构建步骤来修改创建的MSI。
谢谢。
答案 0 :(得分:1)
您可以使用msiinfo.exe
(Windows SDK的一部分)来读取/添加/更新msi属性。
C:\Program Files (x86)\Microsoft SDKs\Windows\v7.0A\Bin\MsiInfo.Exe>msiinfo.exe /?
MsiInfo V 5.0
Copyright (c) Microsoft Corporation. All Rights Reserved
++MsiInfo.exe Command Line Syntax++
MsiInfo.exe {database} --> To Display Summary Info Properties
MsiInfo.exe {database} Options.... --> To Set Summary Info Properties
++MsiInfo.exe Options++
PID_DICTIONARY - /I {value}
PID_CODEPAGE - /C {value}
PID_TITLE - /T {value}
PID_SUBJECT - /J {value}
PID_AUTHOR - /A {value}
PID_KEYWORDS - /K {value}
PID_COMMENTS - /O {value}
PID_TEMPLATE - /P {value}
PID_LASTAUTHOR - /L {value}
PID_REVNUMBER - /V {value}
PID_EDITTIME - /E {value}
PID_LASTPRINTED - /S {value}
PID_CREATE_DTM - /R {value}
PID_LASTSAVE_DTM - /Q {value}
PID_PAGECOUNT - /G {value}
PID_WORDCOUNT - /W {value}
PID_CHARCOUNT - /H {value}
PID_THUMBNAIL - NOT SUPPORTED
PID_APPNAME - /N {value}
PID_SECURITY - /U {value}
Validate String Pool - [/B] /D (use /B to display the string pool)
/? - Displays this help message
/nologo - Do not display the logo message
例如,您可以按如下方式设置“作者”和“主题”属性:
msiinfo.exe my.msi /A "Your name" /J "This is a demo"
请注意,您无法使用
msiinfo.exe my.msi /I
来读取单个属性,因为它会尝试更新属性(有效清除值)。
答案 1 :(得分:1)
假设您要在先前构建的MSI文件中修改MSI属性,则基本上在Windows Kit / SDK中找到WinRunSQL.vbs文件,然后学习SQL命令以更新Property表中的属性。这里有一些例子:http://msdn.microsoft.com/en-us/library/aa372021(v=vs.85).aspx
我假设你对MSI有足够的了解,知道你所引用的属性很可能是属性表中的属性。
答案 2 :(得分:0)
也许您可以尝试使用 DTF (部署工具基础)。我在this answer on serverfault写过这篇文章。请点击链接获取更多信息。
答案 3 :(得分:0)
感谢所有好的反馈。
我实际上找到了一个VBScript解决方案,通过更新我之前构建的MSI的必需属性来完成这项工作。我已将其设置为构建步骤,该步骤在我之前的Team City构建步骤中创建MSI后运行。
不幸的是,我将脚本保存在我的办公室电脑上,因此在此时无法访问它。但是,在本周末之后,我会在办公室时这样做。