AdvancedInstaller - Пользовательское действие VBScript - Свойство, не переданное через - PullRequest
0 голосов
/ 14 октября 2018

В настоящее время я сталкиваюсь с проблемой при попытке установить публичную переменную через VBscript в пользовательском действии.Это касается недвижимости "MYDOMAIN".Независимо от того, что я делаю, значение всегда равно 0.

Даже установка ";" после (пример) Session.Property("MYDOMAIN")="1" не решает проблему.

Когда VBScript выполняется локальнозначение может быть восстановлено (по крайней мере, в переменной).

Пожалуйста, найдите мой скрипт ниже:

'~~~ Query My Domain
Option Explicit
'On Error Resume Next
Dim objWMISvc : Set objWMISvc = GetObject( "winmgmts:\\.\root\cimv2" )
Dim colItems : Set colItems = objWMISvc.ExecQuery( "Select * from Win32_ComputerSystem" )
Dim objSysInfo : Set objSysInfo = CreateObject("ADSystemInfo")
Dim objComp : Set objComp = GetObject("LDAP://" & objSysInfo.ComputerName)
Dim objCompDN : objCompDN = objComp.distinguishedName
Dim objItem
Dim strComputerDomain
Dim Session
For Each objItem in colItems
    strComputerDomain = objItem.Domain
    ' If objItem.PartOfDomain Then
        ' WScript.Echo "Computer Domain: " & strComputerDomain
      ' Wscript.Echo "Computername: " & strComputerName
    ' End If
Next
If strComputerDomain = "DOMAIN1.loc" Then
   Session.Property("MYDOMAIN")="1" 
elseif strComputerDomain = "DOMAIN2.loc" Then
   call CheckIRL(objCompDN,"(?:Division-)(8[0-9]\d{1,2}|982)-") 
elseif strComputerDomain = "DOMAIN3.loc" Then
   Session.Property("MYDOMAIN")="3"
Else
    if strComputerDomain = "" then
        Session.Property("MYDOMAIN")="0"
    End if
End if
Sub CheckIRL(strReturnValue, strPattern)
   Dim objRegEx : set objRegex = new RegExp
    objRegex.pattern = strPattern
    objRegex.global = true

   If objRegex.Test( strReturnValue ) Then
      Session.Property("MYDOMAIN") = "6"
   Else
      Session.Property("MYDOMAIN") = "7"
   End If
End Sub
Sub CheckSLO(strReturnValue, strPattern)
   Dim objRegEx : set objRegex = new RegExp
    objRegex.pattern = strPattern
    objRegex.global = true

   If objRegex.Test( strReturnValue ) Then
      Session.Property("MYDOMAIN") = "4"
   Else
      Session.Property("MYDOMAIN") = "5"
   End If
End Sub

Если честно: у меня нет идей ... Aдруг вставил скрипт в проект InstallShield, и свойство может быть разрешено.Любая идея приветствуется:)

Ответы [ 2 ]

0 голосов
/ 18 октября 2018

Я попробую и вернусь к вам после проверки.Тем временем я создал второй MSI-файл для настройки ... не лучшее решение, но, похоже, оно работает:)

0 голосов
/ 17 октября 2018

Я бы порекомендовал вам попробовать отладить код действия VBS, вставив окно сообщения ( функция MsgBox ) в каждый блок IF вашего кода VBS.Это просто для того, чтобы убедиться, что ваш код VBS действительно устанавливает связанное свойство на значение, отличное от 0, до его выхода.

Просто используйте оператор MsgBox, подобный следующему:

MsgBox Session.Property("MYDOMAIN")

для отображениязначение свойства.

Тогда, если VBS действительно устанавливает свойство в значение, отличное от 0, перед выходом, в этом случае нам потребуется больше подробностей о точной последовательности выполнения, когда свойство возвращается к 0.

...