Мне не удалось найти никакой информации о доступе к свойствам из таблиц установщика в настраиваемом действии. Я обнаружил, что вы можете написать некоторый синтаксис установщика SQL для обновления таблиц из настраиваемых действий, но это было излишним, и я не мог заставить его работать.
Что мне удалось сделать, так это использовать подстановку свойств с таблицей ISIISProperty.
- Я создал два новых свойства в таблице свойств под названием ASPBITNESS и ALLOWTHIRTYTWOBIT, для которых по умолчанию установлены значения x86 и true соответственно.
- Затем я отредактировал таблицу ISIISProperty в прямом редакторе и заменил значения для Enable32bitAppOnWin64 и AspNetVerBitness на [ALLOWTHIRTYTWOBIT] и [ASPBITNESS] соответственно. Интересно, что параметр «Включить 32-разрядные приложения» показывает «Нет» в конструкторе InstallShield, хотя для свойства [ALLOWTHIRTYTWOBIT] по умолчанию установлено значение true.
- Наконец, у меня есть настраиваемое действие, которое условно (НЕ УДАЛИТЬ и 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: 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 (s) (D4: 1C) [10: 53: 18: 662]: Выполнение действия: Set64Bit
Действие 10:53:18: Set64Bit.
Начало действия 10:53:18: Set64Bit.
MSI (D4: 0C) [10: 53: 18: 678]: Создан сервер настраиваемых действий с PID 912 (0x390).
MSI (D4: D0) [10: 53: 18: 709]: Запуск в качестве службы.
MSI (D4: D0) [10: 53: 18: 709]: Здравствуйте, я ваш 32-битный сервер Impersonated Custom Action.
MSI (s) (D4! 1C) [10: 53: 18: 725]: ИЗМЕНЕНИЕ СВОЙСТВА: изменение свойства АСПЕКТИВНОСТЬ.
Его текущее значение - x86. Его новое значение: 'x64'.
MSI (s) (D4! 1C) [10: 53: 18: 725]: ИЗМЕНЕНИЕ СВОЙСТВА: Изменение свойства ALLOWTHIRTYTWOBIT
. Его текущее значение - «истина». Его новое значение: false.
А потом:
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
person
reckface
schedule
07.03.2013