【发布时间】:2009-12-05 15:14:38
【问题描述】:
我有一个 Web 设置项目安装程序,我想默认安装过程中选择的站点和应用程序池。此外,我希望在安装程序的构建过程中将产品名称附加到当前版本号。
任何帮助将不胜感激!谢谢
【问题讨论】:
标签: windows-installer web-setup-project
我有一个 Web 设置项目安装程序,我想默认安装过程中选择的站点和应用程序池。此外,我希望在安装程序的构建过程中将产品名称附加到当前版本号。
任何帮助将不胜感激!谢谢
【问题讨论】:
标签: windows-installer web-setup-project
Visual Studio Web 设置项目是一个非常简单(而且不太灵活)的工具。不过,您有一些选择(假设您还没有准备好改用更灵活的东西,例如 WiX 或商业安装包装产品)。
一种方法是在构建 MSI 文件后对其进行修改。
您可以添加如下属性:
添加一个名为TARGETSITE 的属性并将其设置为您需要作为默认站点的元数据库路径。例如,/LM/W3SVC/2。
添加一个名为TARGETAPPPOOL 的属性并将其设置为您需要作为默认值的应用程序池的名称。例如,MyAppPool。
您还可以通过编辑现有的ProductName 属性来设置产品名称。
可以使用 InstEdit 或 ORCA(Windows SDK 的一部分)等工具手动更改 MSI 文件。
或者,您可以创建/查找 MSBuild 任务以获取和设置 MSI 文件中的属性。这为您提供了一种在自动构建期间自动进行所需更改的好方法。
更简单地说,您可以使用 msiexec.exe 从命令行调用安装,并指定 TARGETSITE 和 TARGETAPPPOOL 属性的值,例如:
msiexec /i MySetup.msi TARGETSITE=/LM/W3SVC/2 TARGETAPPPOOL=Pool2
不过,你不能用这种方式搞乱ProductName。
【讨论】:
在 Orca 中打开 MSI。转到属性,右键单击并右键单击以添加行。
属性:TARGETAPPPOOL 价值:ASP.NET v4.0
您可以使用此 VBS 脚本执行相同操作:
Dim oDatabase 'As WindowsInstaller.Database
Const msiOpenDatabaseModeTransact = 1
Dim oInstaller 'As WindowsInstaller.Installer
Dim sFilePath 'As String
sFilePath = "C:\Test\MySetup.msi"
Set oInstaller = CreateObject("WindowsInstaller.Installer")
Set oDatabase = oInstaller.OpenDatabase(sFilePath, msiOpenDatabaseModeTransact)
sql = "INSERT INTO Property (Property, Value) VALUES ('TARGETAPPPOOL', 'ASP.NET v4.0')"
Dim oView 'As WindowsInstaller.View
Set oView = oDatabase.OpenView(sql)
oView.Execute
oView.Close
oDatabase.Commit
MsgBox ("Done!")
【讨论】: