Я нашел способ узнать, открыта ли консоль Chrome или нет. Это все еще хак, но он более точен и будет работать, когда консоль отстыкована или нет.
В основном выполнение этого кода с закрытой консолью занимает около ~ 100 микросекунд, а когда консоль открыта, она занимает примерно вдвое больше ~ 200 микросекунд.
console.log(1);
console.clear();
(1 миллисекунда = 1000 микросекунд)
Я написал больше об этом здесь .
Демо-версия здесь .
Обновление:
@zswang нашел наилучшее на данный момент решение - посмотрите его ответ
Вы можете написать VBS, JS (используя cscript, который встроен в каждую Windows), чтобы изменить MSI, синтаксис в значительной степени похож на SQL. Вот страница MSDN, на которой показаны различные примеры.
Сценарий Perl можно использовать для изменения пакета msi установщика. Для этого можно использовать Win32 OLE . Откройте MSI с помощью Win32 :: OLE-> new
API. Откройте базу данных MSI и выполните SQL-запросы, чтобы выполнить обновление.
Этот скрипт Perl можно использовать в сборках.
Эта ссылка может помочь вам написать необходимую.
Поскольку вы привыкли работать с Orca, просто сохраните модификации как файл преобразования с помощью Orca, а затем примените его с помощью 'msitran' в событии post build вашего проекта setup.
Я использую это в проекте установки, и это работает просто замечательно.
Мне тоже пришлось это сделать - вот мой файл VBScript (на случай, если он кому-то пригодится) ...
Dim msiInstaller
Dim msiDatabase
Dim msiView
Dim msiRecord
Dim pathToMsiFile
Dim pathToIconFile
If WScript.Arguments.Count <> 2 Then
WScript.Echo "Usage:" & vbCrLf & " " & WScript.ScriptName & " <path-to-msi> <path-to-icon>"
WScript.Quit
End If
Dim pathToMsi, pathToIcon
pathToMsi = WScript.Arguments(0)
pathToIcon = WScript.Arguments(1)
Set msiInstaller = CreateObject("WindowsInstaller.Installer")
Set msiRecord = msiInstaller.CreateRecord(1)
msiRecord.SetStream 1, pathToIcon
Set msiDatabase = msiInstaller.OpenDatabase(pathToMsi, 1)
Set msiView = msiDatabase.OpenView("UPDATE Icon SET Data = ? WHERE Name <> ''")
msiView.Execute msiRecord
msiDatabase.Commit
Этот скрипт заменяет все ярлыки в базе данных MSI одним значком - если вам нужно выборочно, тогда у вас есть еще немного работы.
Возможно, самым простым решением, которое я нашел для этого, было создание нового "Transform" внутри Orca, а затем применение трансформации как часть моих шагов после сборки.
1) Откройте MSI-файл с помощью ORCA для редактирования. 2) Нажмите на "Новое преобразование". 3) Внесите все необходимые изменения в таблицы MSI с помощью редактора Orca. 4) Нажмите на "Generate transform" и сохраните файл. 5) Отредактируйте события сборки, чтобы выполнить msitran на этапе после сборки. примерно так...
msitran -a (путь к файлу преобразования) (путь к MSI-файлу)
Более подробную информацию о MSITran.exe можно найти в следующем месте... MSITran
Это автоматически применит ваши правки к MSI-файлу после завершения сборки программы установки, устраняя необходимость в пользовательском VBScript.