如何从Installshield vbscript或javascript自定义操作访问存储在Direct Editor表中的变量?

时间:2013-03-06 14:52:28

标签: installshield installshield-2011

我需要在自定义操作中读取或更改IsIISProperty表中“Enable32bitAppOnWin64”的值。现在我可以通过Session.Properties("PropertyName")

从Property Manager访问属性了

我无法看到如何对属性表执行相同操作。 我尝试了{ISIISProperty1},[ISIISProperty1]和Session.Properties(“ISIISProperty1”)都没有成功。

我如何实现这一目标?

任何帮助将不胜感激。

由于

1 个答案:

答案 0 :(得分:1)

我无法在自定义操作中找到有关从安装程序表访问属性的任何信息。我发现的是你可以编写一些安装程序SQL语法来更新自定义操作中的表,但这样做太过分了,我无法让它工作。

我能够做的是在ISIISProperty表中使用属性替换。

  1. 我在属性表中创建了两个名为 ASPBITNESS ALLOWTHIRTYTWOBIT 的新属性,默认情况下分别设置为x86和true。
  2. 然后我在直接编辑器中编辑了 ISIISProperty 表,并用[ALLOWTHIRTYTWOBIT]和[ASPBITNESS]替换了 Enable32bitAppOnWin64 AspNetVerBitness 的值分别。有趣的是,即使[ALLOWTHIRTYTWOBIT]属性默认设置为true,启用32位应用程序设置在InstallShield设计器中显示“否”。
  3. 最后,我有一个自定义操作,有条件地(NOT REMOVE和VersionNT64和IIS_VERSION>“#6”)在安装开始时触发,以相应地更改这些值。
  4. 自定义操作代码为:

    On Error Resume Next
    
    ' change the properties for x64 systems
    if SYSINFO.bIsWow64 <> 0 then
        Session.Property("ASPBITNESS") = "x64"  
        Session.Property("ALLOWTHIRTYTWOBIT") = "false"
    end if
    

    在MSI日志显示之前:

      

    InstallShield 12:09:19:虚拟目录的SetVRootProperties
      'MyWebApp',app''   InstallShield 12:09:19:IIS7检查应用程序池上的ASP.NET版本位数   'MyAPPPool',安装请求'x86'
      ......   InstallShield 12:09:19:SetAspversion:机器是64位和
      IIS以当前所选模式以外的位模式运行
      ...
      InstallShield 12:09:19:IISRT出错:-2172
      ...
      CustomAction ISIISInstall返回实际的错误代码1603(注意,如果在沙箱中发生翻译,这可能不是100%准确)

    完成这些更改后,应用程序将立即安装并显示日志:

      

    MSI(D4:1C)[10:53:18:662]:采取行动:Set64Bit
      行动10:53:18:Set64Bit。
      行动开始10:53:18:Set64Bit。
      MSI(s4)(D4:0C)[10:53:18:678]:使用PID 912(0x390)创建自定义操作服务器。
      MSI(s)(D4:D0)[10:53:18:709]:作为服务运行。
      MSI(s)(D4:D0)[10:53:18:709]:您好,我是您的32位模拟自定义操作服务器。
      MSI(s)(D4!1C)[10:53:18:725]:物业变更:修改ASPBITNESS属性。
      它的当前值是'x86'。它的新价值:'x64'   MSI(s)(D4!1C)[10:53:18:725]:财产变更:修改ALLOWTHIRTYTWOBIT
       属性。它的当前值是'真实'。它的新价值:'假'。

    然后:

      

    InstallShield 10:53:20:虚拟目录的SetVRootProperties
      'MyWebApp',app''   InstallShield 10:53:20:IIS7检查应用程序池上的ASP.NET版本位数
      'MyAppPool',安装请求'x64'
      InstallShield 10:53:20:应用程序池Enable32bitAppOnWin64值为'false'   InstallShield 10:53:20:ASP.NET版本可以设置为64位。
      InstallShield 10:53:20:配置ASP .NET版本:
      C:\ Windows \ Microsoft.NET \ Framework64 \ v4.0.30319 \ aspnet_regiis.exe -ir