Visual Studio MSI安装程序

时间:2009-12-05 15:14:39

标签: windows-installer web-setup-project

我有一个Web安装程序项目安装程序,我想默认安装过程中选择的站点和应用程序池。另外,我想让产品的名称在安装程序的构建过程中附加当前版本号。

任何帮助将不胜感激!谢谢

2 个答案:

答案 0 :(得分:9)

Visual Studio Web Setup Project是一个非常简单(并且不太灵活)的工具。但是你有一些选择(假设你还没准备好转用更灵活的东西,比如WiX或商业安装包装产品)。

修改构建后的MSI

执行所需操作的一种方法是在构建MSI文件后对其进行修改。

您可以添加以下属性:

  1. 添加名为TARGETSITE的属性,并将其设置为您需要作为默认站点的配置数据库路径。例如,/LM/W3SVC/2

  2. 添加名为TARGETAPPPOOL的属性,并将其设置为您需要作为默认值的应用程序池的名称。例如,MyAppPool

  3. 您还可以通过编辑现有的ProductName属性来设置产品名称。

  4. 可以使用InstEdit或ORCA(属于Windows SDK的一部分)等工具手动更改MSI文件。

    或者,您可以创建/查找MSBuild任务以获取和设置MSI文件中的属性。这为您提供了一种在自动构建期间自动进行所需更改的好方法。

    使用命令行参数调用

    更简单地说,您可以使用msiexec.exe从命令行调用安装,并指定TARGETSITETARGETAPPPOOL属性的值,例如:

    msiexec /i MySetup.msi TARGETSITE=/LM/W3SVC/2 TARGETAPPPOOL=Pool2
    

    尽管如此,你不能以ProductName这种方式搞乱。

答案 1 :(得分:0)

在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!")
相关问题