Msiexe c / журнал с датой и временем в формате UT C - PullRequest
1 голос

Я создаю свой собственный MSI из кода wsx. Когда я запускаю его с помощью команды

msiexec /i "test.msi" /quiet /norestart /qn /log "test.log"

, у меня есть такой файл журнала

Action start 10:19:28: INSTALL.
Action start 10:19:28: FindRelatedProducts.
Action ended 10:19:28: FindRelatedProducts. Return value 1.
Action start 10:19:28: SaveCmdLineValueINSTALLDIR.
Action ended 10:19:28: SaveCmdLineValueINSTALLDIR. Return value 1.
Action start 10:19:28: AppSearch.

Дата и время в файле журнала являются локальными, но мне нужен формат UT C. Есть какое-нибудь решение?

1 Ответ

0 голосов
/ 29 мая 2020

Я быстро просмотрел и исследовал журнал для 1) временных меток C стиля (очевидных нет) ( как интерпретировать журнал MSI ), 2) использование журнала отладки тоже не добавило много полезного, то есть проблема с системными политиками 3) - может быть, они могут сообщать все время в UT C? Точно сказать не могу. Ничего очевидного не нашел. Время в программе просмотра событий 4) кажется местным, но вы можете получить к нему доступ, чтобы получить версии UT C.

Что вы определенно можно сделать, это 5) использовать настраиваемое действие , чтобы записать время UT C самостоятельно непосредственно в начало журнала. Это поможет? ( UT C Time VBScript ).

strComputer = "."
Set objWMIService = GetObject("winmgmts:" _
    & "{impersonationLevel=impersonate}!\\" & strComputer & "\root\cimv2")

Set colItems = objWMIService.ExecQuery("Select * from Win32_UTCTime")

For Each objItem in colItems
  Msgbox "UTC Time: " + CStr(objItem.Hour) + CStr(":") + CStr(objItem.Minute) + CStr(":") + CStr(objItem.Second)
Next

Пользовательские фрагменты действий : в исходном файле WiX требуется множество конструкций для запуска пользовательских действий VBScript:

<Binary Id='UTC.vbs' SourceFile='UTC.vbs' />
<CustomAction Id='UTC.vbs' VBScriptCall='' BinaryKey='UTC.vbs' Execute='immediate' Return='ignore'/>

<InstallExecuteSequence>
    <Custom Action='UTC.vbs' Sequence='1' />
</InstallExecuteSequence>

Запись в журнал : Как записывать в файл журнала MSI . Код, необходимый для записи в файл журнала в краткой форме:

Const msiMessageTypeInfo = &H04000000
Set msgrec = Installer.CreateRecord(1) 
msgrec.StringData(0) = "Log: [1]"
msgrec.StringData(1) = "write this to log"
Session.Message msiMessageTypeInfo, msgrec 

Ссылки :

...