Как я и подозревал, к концу моего первоначального поста был другой путь, и я ошибался.По крайней мере, немного.Будучи новичком в WiX, я не принял во внимание тот факт, что значения должны быть добавлены в базу данных.Учитывая, что я еще не сталкивался с этим в своем опыте, я узнал что-то новое.
Итак, вот что я сделал, чтобы значения отображались в моем ComboBox:
1.) Приведенный выше скрипт был изменен для использования коллекции для отправки соответствующих значений в таблицу базы данных с именем ComboBox.
2.) Используя Orca, я добавил таблицу ComboBox.Кстати, он просто хранит информацию об используемых элементах ListItems, подождите ... ComboBoxes.
3.) Добавлено соответствующее пользовательское действие.
4.) Вызываетсяэто перед загрузкой формы.
Вот сценарий vb:
Const ERROR_SUCCESS = 0
Const ERROR_INSTALL_FAILURE = 1603
Const msiViewModifyInsertTemporary = 7
Function LogInfo(msg)
Dim rec
Set rec = Session.Installer.CreateRecord(1)
rec.StringData(0) = msg
LogInfo = Session.Message(&H04000000, rec)
End Function
Function GetNetworkPrinters()
Dim oView, oReccombo
Dim r
LogInfo "INSIDE GetNetworkPrinters"
Set objNetwork = CreateObject("Wscript.Network")
strName = objNetwork.UserName
strDomain = objNetwork.UserDomain
strUser = strDomain & "\" & strName
strText = ""
strComputer = "."
Set objWMIService = GetObject("winmgmts:\\" & strComputer & "\root\cimv2")
Set colPrinters = objWMIService.ExecQuery _
("Select * From Win32_Printer Where Local = FALSE")
Set oView = Session.Database.OpenView("SELECT * FROM `ComboBox`")
oView.Execute
r = 1
For Each objPrinter in colPrinters
r = r + 1
LogInfo "THE PRINTER NAME IS " & objPrinter.Name
Set oReccombo = Session.Installer.CreateRecord(4)
oReccombo.StringData(1) = "cboPrinters_Prop"
oReccombo.IntegerData(2) = r
oReccombo.StringData(3) = objPrinter.Name
oReccombo.StringData(4) = objPrinter.Name
LogInfo "Made it to the call to insert the record"
oView.Modify msiViewModifyInsertTemporary, oReccombo
Next
oView.Close
GetNetworkPrinters = ERROR_SUCCESS
Set oView = Nothing
End Function
Добавить двоичную запись:
<Binary Id="GetNetworkPrinters" SourceFile="*Enter the full path to the script here* \GetNetworkPrinters.vbs" />
Добавить настраиваемое действие:
<CustomAction Id="AddPrintersToComboBox" BinaryKey="GetNetworkPrinters" VBScriptCall="GetNetworkPrinters" Execute="immediate" Return="check" HideTarget="no" Impersonate="yes" />
Добавьте вызов к пользовательскому действию в InstallUISequence и AdminUISequence:
<Custom Action="AddPrintersToComboBox" Before="MaintenanceForm"></Custom>
Вот и все ... Теперь, конечно, необходимо очистить скрипт, чтобы генерировать лучшую информацию журнала итакже нуждается в лучшей (некоторой) обработке ошибок, но она определенно работает.
Надеюсь, это поможет другим ...