Перенаправление журнала InstallShield на консоль

#installshield

#installshield

Вопрос:

Я использую интерфейс InstallShield 2011 Automation для создания своего установщика. Во время сборки файлы журнала создаются в папке MSI_English LogFiles.

Возможно ли перенаправить журнал на консоль. Это было бы более удобно для моего сервера сборки.

Ответ №1:

Простым ответом может быть использование iscmdbld.exe вместо интерфейса автоматизации. Это уже отправляет сообщения на консоль.

Более сложным ответом должно быть использование событий состояния сборки (его пример VB приведен ниже). В частности, вы захотите обработать StatusMessage событие. Обратите внимание, что вы захотите изменить экземпляры 21 , чтобы они соответствовали версии остальной части вашего сценария автоматизации.

 Public WithEvents pISWiRelease As ISWiAuto21.ISWiRelease

Private Sub Foo()
    Dim pISWiProject As IswiAuto21.ISWiProject
    Set pISWiProject = CreateObject("IswiAuto21.ISWiProject")
    pISWiProject.OpenProject "C:InstallShield 2014 ProjectsMy Project Name-1.ism", False
    Set pISWiRelease = pISWiProject21.ISWiProductConfigs("Product Configuration 1").ISWiReleases("Release 1")
    pISWiRelease.Build
    pISWiProject.CloseProject
    Set pISWiRelease = Nothing
    Set pISWiProject = Nothing
End Sub

Private Sub pISWiRelease_ProgressIncrement(ByVal lIncrement As Long, pbCancel As Boolean)
    ' Place your code here
End Sub

Private Sub pISWiRelease_ProgressMax(ByVal lMax As Long, pbCancel As Boolean)
    ' Place your code here
End Sub

Private Sub pISWiRelease_StatusMessage(ByVal sMessage As String, pbCancel As Boolean)
    ' Place your code here
End Sub
  

Комментарии:

1. Любые предложения о том, как это будет работать с JScript? Не получается попасть туда, где он регистрируется как наблюдатель событий, но, вероятно, у меня нет опыта работы с VB.

2. В примере с VB это волшебство, связанное с начальной WithEvents строкой. В C общий метод называется точками подключения. В C # это события и делегаты. Некоторые поисковые запросы предполагают, что он может превратиться в attachEvent или addEventListener в JScript (что-то вроде pISWiRelease.attachEvent("StatusMessage", f) ), но я не знаком с тем, как именно это сделать. Надеюсь, это, по крайней мере, хорошие ключевые слова для ваших поисковых запросов!