我有一个 Web 安装项目安装程序,我想默认安装过程中选择的站点和应用程序池。此外,我想让产品名称在安装程序的构建过程中附加当前版本号。
任何帮助将不胜感激!谢谢
我有一个 Web 安装项目安装程序,我想默认安装过程中选择的站点和应用程序池。此外,我想让产品名称在安装程序的构建过程中附加当前版本号。
任何帮助将不胜感激!谢谢
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!")