我需要在自定义操作中读取或更改IsIISProperty表中“Enable32bitAppOnWin64”的值。现在我可以通过Session.Properties("PropertyName")
我无法看到如何对属性表执行相同操作。 我尝试了{ISIISProperty1},[ISIISProperty1]和Session.Properties(“ISIISProperty1”)都没有成功。
我如何实现这一目标?
任何帮助将不胜感激。
由于
答案 0 :(得分:1)
我无法在自定义操作中找到有关从安装程序表访问属性的任何信息。我发现的是你可以编写一些安装程序SQL语法来更新自定义操作中的表,但这样做太过分了,我无法让它工作。
我能够做的是在ISIISProperty表中使用属性替换。
自定义操作代码为:
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