1

我需要从自定义操作中读取或更改 IsIISProperty 表中“Enable32bitAppOnWin64”的值。现在,虽然我可以通过 Property Manager 访问属性Session.Properties("PropertyName")

我看不出如何对属性表做同样的事情。我试过 {ISIISProperty1}、[ISIISProperty1] 和 Session.Properties("ISIISProperty1") 都没有成功。

我如何实现这一目标?

任何帮助将不胜感激。

谢谢

4

1 回答 1

1

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

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

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

自定义操作代码代码为:

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

在这些更改之后,应用程序安装并且日志现在显示:

MSI (s) (D4:1C) [10:53:18:662]:执行操作:Set64Bit
操作 10:53:18:Set64Bit。
动作开始时间 10:53:18:Set64Bit。
MSI (s) (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
属性。它的当前值为“真”。它的新值:'false'。

接着:

InstallShield 10:53:20:虚拟目录
“MyWebApp”、应用程序“
InstallShield”的 SetVRootProperties 10:53:20:IIS7 检查应用程序池
“MyAppPool”上的 ASP.NET 版本位数,安装请求“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

于 2013-03-07T13:01:41.647 回答