Windows installer Visual Studio MSI安装程序

Windows installer Visual Studio MSI安装程序,windows-installer,web-setup-project,Windows Installer,Web Setup Project,我有一个Web安装项目安装程序,我希望默认安装过程中选择的站点和应用程序池。另外,我想在安装程序的构建过程中,让产品名称附加当前版本号 任何帮助都将不胜感激!谢谢Visual Studio Web安装项目是一个非常简单(但不太灵活)的工具。不过,您有一些选择(假设您还没有准备好使用更灵活的东西,例如WiX或商业安装打包产品) 在生成后修改MSI 一种方法是在构建MSI文件后修改它 您可以添加以下属性: 添加名为TARGETSITE的属性,并将其设置为需要作为默认值的站点的元数据库路径。例如,/L

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


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

Visual Studio Web安装项目是一个非常简单(但不太灵活)的工具。不过,您有一些选择(假设您还没有准备好使用更灵活的东西,例如WiX或商业安装打包产品)

在生成后修改MSI 一种方法是在构建MSI文件后修改它

您可以添加以下属性:

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

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

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

  • 对MSI文件进行更改可以使用或ORCA(这是的一部分)等工具手动实现

    或者,您可以创建/查找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!")
    

    作为构建过程的一部分,您还可以使用MSIAPI()来自动化更改。您可以从这里获得一个使用MSIAPI的jscript示例(相应调整):非常感谢Dave和Kevin的回复。