【问题标题】:WiX IIS Metabase PropertyWiX IIS 元数据库属性
【发布时间】:2011-12-15 05:28:49
【问题描述】:

有没有办法在 WiX for IIS6 中获取 Enable32BitAppOnWin64 元数据库属性?

我正在安装一个 Web 应用程序,需要在 IIS 设置为 32 位模式的 64 位计算机上运行 aspnet_regiis.exe。要获取 exe 的路径,我使用以下内容:

<!--<?if $(var.Platform) = x64 ?>-->
    <SetProperty Id="ASPNETREGIIS" Sequence="execute" Before="ConfigureIIs" Value="[NETFRAMEWORK20INSTALLROOTDIR64]aspnet_regiis.exe" />
<!--<?else ?>
    <SetProperty Id="ASPNETREGIIS" Sequence="execute" Before="ConfigureIIs" Value="[NETFRAMEWORK20INSTALLROOTDIR]aspnet_regiis.exe" />
<?endif ?>-->

但是,当启用32位模式时,我无法依赖平台获取exe的正确路径。

【问题讨论】:

    标签: iis-6 wix iis-metabase


    【解决方案1】:

    WiX 中没有执行此操作的标准方法 - 您需要自定义操作。它应该是直接 CA,它将设置一个属性,您将在您的条件下使用该属性。我猜这是一个示例代码,可以满足您的需要:

     static bool IsIIS32bit()
     {
       var appPools = new DirectoryEntry("IIS://localhost/w3svc/AppPools");
       int enable32Bit;
    
       try
       {
         enable32Bit = (int)appPools.InvokeGet("Enable32bitAppOnWin64");
       }
       catch
       {
         enable32Bit = 0;
       }
    
       return enable32Bit == 1;
     }
    

    另请注意,在您的示例中,您使用构建时变量从两个 SetProperty 元素中进行选择。如果您有 2 个 MSI 软件包,每个平台一个,这将起作用。在这种情况下,您的每个 MSI 包都将具有正确设置的属性。您现在添加的额外要求(检查 IIS 位数模式)迫使您将检查移至安装时。因此,您必须以某种方式重新设计条件逻辑。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2018-01-10
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2011-08-10
      • 1970-01-01
      相关资源
      最近更新 更多