Имя пользователя:
Пароль:
 

Показать сообщение отдельно

Ветеран


Сообщения: 27449
Благодарности: 8088

Профиль | Отправить PM | Цитировать


Лирическое отступление.
читать дальше »
Я пользую файловый менеджер «Far Manager», посему: я работаю с командной строкой Far Manager'а, у меня стандартным хостом WSH назначен консольный «cscript.exe» (вместо «wscript.exe»), я пользую полные пути к скриптам вместо того, чтобы плодить скрипты по папкам.

Так делаю я. У Вас, MKN, K.A.V., я понимаю, процесс работы организован несколько иначе. Скрипт из #141 я выложил, чтобы Вы могли оценить, работает ли вообще сие, и гож ли подобный подход для Вас. Стало быть, я попробую написать по Вашим предпочтениям, но Вы должны мне разъяснить, почему нужно именно так, а не иначе. Хорошо?

Насколько я понимаю, Far Manager'ом никто из Вас не пользуется (или он не является основным Вашим файловым менеджером), так?

Почему я сие хочу выяснить: дело в том, что в его командной строке очень легко, быстро и удобно указывать путь к WSH-скрипту, лежащему в папке A, как параметр скрипта — путь к некоему msi-файлу, лежащему в папке B, результат работы скрипта перенаправить в некий файл в папке C. Ну, а находиться (иметь текущим каталогом) при этом можно вообще некую папку D . Например:
Код: Выделить весь код
cscript.exe "C:\Program Files\My Scripts\GetProductCodeFromMSI.vbs" "C:\Program Files\Windows Installer 4.5 SDK\TOOLS\orca.msi" 1>"E:\Песочница\0056\ProductCode.txt"
Или, например, просто получить «ProductCode» в редактор:
Код: Выделить весь код
edit:< cscript.exe "C:\Program Files\My Scripts\GetProductCodeFromMSI.vbs" "C:\Program Files\Windows Installer 4.5 SDK\TOOLS\orca.msi"
Впрочем, сие есть моё видение, но буду признателен Вам, если Вы опишете, как работаете Вы, как предполагаете (и хотели бы) использовать скрипт в Вашей работе. Может быть, Вам нужно его вызывать из редактора, где Вы пишете скрипты NSIS. А пока…


Цитата MKN:
А нельзя ли организовать скрипт так, чтобы он обрабатывал находящийся рядом с ним .MSI файл ? »
Можно. Например, так будут обрабатываться все MSI-файлы, находящиеся рядом с файлом скрипта:
Код: Выделить весь код
Option Explicit

Const msiOpenDatabaseModeReadOnly = 0

Dim objFSO
Dim objFile

Dim strProductCode


Set objFSO = WScript.CreateObject("Scripting.FileSystemObject")

For Each objFile In objFSO.GetFolder(objFSO.GetParentFolderName(WScript.ScriptFullName)).Files
	If UCase(objFSO.GetExtensionName(objFile.Name)) = UCase("msi") Then
		With WScript.CreateObject("WindowsInstaller.Installer")
			With .OpenDatabase(objFile.Path, msiOpenDatabaseModeReadOnly)
				With .OpenView("SELECT * FROM Property WHERE Property = 'ProductCode'")
					.Execute()
					
					With .Fetch()
						strProductCode = .StringData(2)
						WScript.Echo strProductCode
					End With
				End With
			End With
		End With
	End If
Next

WScript.Quit 0
Цитата K.A.V.:
я так понимаю, что здесь выскакивает MesssageBox? Было бы неплохо скидывать значение в файл в любой форме (либо значение в первой строке текстового файла, »
1. Использовать хост «cscript.exe» и перенаправлять вывод в нужный файл.
2. Прямой вывод в текстовый файл из скрипта. Вопрос — в какой именно: где задать его имя, где он будет находиться.
Это сообщение посчитали полезным следующие участники:

Отправлено: 19:53, 26-05-2011 | #146