Как получить доступ к переменным, хранящимся в таблице Direct Editor, из настраиваемого действия Installshield vbscript или javascript?

Мне нужно прочитать или изменить значение «Enable32bitAppOnWin64» в таблице IsIISProperty из настраиваемого действия. Теперь, пока я могу получить доступ к свойствам из Менеджера свойств по Session.Properties("PropertyName")

Я не понимаю, как сделать то же самое для таблиц свойств. Я безуспешно пробовал {ISIISProperty1}, [ISIISProperty1] и Session.Properties ("ISIISProperty1").

Как мне этого добиться?

Любая помощь будет оценена по достоинству.

Спасибо


person reckface    schedule 06.03.2013    source источник


Ответы (1)


Мне не удалось найти никакой информации о доступе к свойствам из таблиц установщика в настраиваемом действии. Я обнаружил, что вы можете написать некоторый синтаксис установщика SQL для обновления таблиц из настраиваемых действий, но это было излишним, и я не мог заставить его работать.

Что мне удалось сделать, так это использовать подстановку свойств с таблицей ISIISProperty.

  1. Я создал два новых свойства в таблице свойств под названием ASPBITNESS и ALLOWTHIRTYTWOBIT, для которых по умолчанию установлены значения x86 и true соответственно.
  2. Затем я отредактировал таблицу ISIISProperty в прямом редакторе и заменил значения для Enable32bitAppOnWin64 и AspNetVerBitness на [ALLOWTHIRTYTWOBIT] и [ASPBITNESS] соответственно. Интересно, что параметр «Включить 32-разрядные приложения» показывает «Нет» в конструкторе InstallShield, хотя для свойства [ALLOWTHIRTYTWOBIT] по умолчанию установлено значение true.
  3. Наконец, у меня есть настраиваемое действие, которое условно (НЕ УДАЛИТЬ и 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