【问题标题】:Visual Studio MSI InstallersVisual Studio MSI 安装程序
【发布时间】:2009-12-05 15:14:38
【问题描述】:

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

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

【问题讨论】:

    标签: windows-installer web-setup-project


    【解决方案1】:

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

    构建后修改 MSI

    一种方法是在构建 MSI 文件后对其进行修改。

    您可以添加如下属性:

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

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

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

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

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

    使用命令行参数调用

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

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

    不过,你不能用这种方式搞乱ProductName

    【讨论】:

    【解决方案2】:

    在 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!")
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2014-02-22
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2018-06-06
      • 1970-01-01
      相关资源
      最近更新 更多