Как получить доступ к переменным, хранящимся в таблице Direct Editor, из пользовательского действия Installshield vbscript или javascript?
Мне нужно прочитать или изменить значение "Enable32bitAppOnWin64" в таблице IsIISProperty из пользовательского действия. Теперь, пока я могу получить доступ к свойствам из Property Manager, Session.Properties("PropertyName")
Я не вижу, как сделать то же самое для таблиц свойств. Я попытался {ISIISProperty1}, [ISIISProperty1] и Session.Properties("ISIISProperty1") все безуспешно.
Как мне этого добиться?
Любая помощь будет оценена.
Спасибо
1 ответ
Мне не удалось найти какую-либо информацию о доступе к свойствам из таблиц установщика в пользовательском действии. Я обнаружил, что вы можете написать синтаксис SQL установщика для обновления таблиц из пользовательских действий, но это было излишним, и я не мог заставить его работать.
То, что я смог сделать, это использовать замены свойств с таблицей ISIISProperty.
- Я создал два новых свойства в таблице свойств с именами ASPBITNESS и ALLOWTHIRTYTWOBIT, которые по умолчанию установлены в x86 и true соответственно.
- Затем я отредактировал таблицу ISIISProperty в непосредственном редакторе и заменил значения для Enable32bitAppOnWin64 и AspNetVerBitness на [ALLOWTHIRTYTWOBIT] и [ASPBITNESS] соответственно. Интересно, что параметр "Включить 32-разрядные приложения" показывает "Нет" в конструкторе InstallShield, хотя для свойства [ALLOWTHIRTYTWOBIT] по умолчанию установлено значение true.
- Наконец, у меня есть пользовательское действие, которое условно (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: SetVRootProperties для виртуального каталога
'MyWebApp', приложение ''
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-битный олицетворенный сервер пользовательских действий.
MSI (D4! 1C) [10: 53: 18: 725]: ИЗМЕНЕНИЕ ИМУЩЕСТВА: изменение свойства ASPBITNESS.
Его текущее значение - x86. Его новое значение: "x64".
MSI (s) (D4! 1C) [10: 53: 18: 725]: ИЗМЕНЕНИЕ СОБСТВЕННОСТИ: Изменение ALLOWTHIRTYTWOBIT
имущество. Текущее значение "true". Его новое значение: "ложь".
А потом:
InstallShield 10:53:20: SetVRootProperties для виртуального каталога
'MyWebApp', приложение ''
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