WiX: сделать интерактивный установщик, который также генерирует подробные файлы журнала установки

Это основной вопрос В самом деле, но я не могу найти ответа. У меня есть установщик, использующий загрузчик. Чтобы получить подробные файлы журнала, когда у вас есть загрузчик, вы просто добавляете некоторые аргументы при вызове exe:

MyInstaller.exe / l log.txt

Проблема в том, что установщик должен быть интерактивным (просто значок с надписью MyInstaller.exe, который просто нужно щелкнуть для запуска) для установки - мне не разрешено просить сотрудников, которые будут выполнять установку, открыть командную строку, и т.д. Поэтому мне нужен способ сделать его интерактивным. и создает подробные файлы.

Очевидный ответ (который я, вероятно, сделаю) - создать exe-оболочку. В этом exe создайте процесс с указанной выше строкой. Однако мне было интересно, есть ли способ использовать WiX, чтобы я мог сделать это так, чтобы при нажатии MyInstaller.exe он не только устанавливал, но и создавал подробные файлы журнала, избавляя меня от необходимости создавать оболочку exe.

Я сбиваю себя с толку, когда пишу о самораспаковывающихся архивах - и полагаю, что сбиваю с толку и других :-). См. Отредактированную концовку моего ответа ниже. Надеюсь, вы найдете решение, которое вам подходит. Удачи.

Stein Åsmul 12.08.2018 06:05
Стоит ли изучать PHP в 2023-2024 годах?
Стоит ли изучать PHP в 2023-2024 годах?
Привет всем, сегодня я хочу высказать свои соображения по поводу вопроса, который я уже много раз получал в своем сообществе: "Стоит ли изучать PHP в...
Поведение ключевого слова "this" в стрелочной функции в сравнении с нормальной функцией
Поведение ключевого слова "this" в стрелочной функции в сравнении с нормальной функцией
В JavaScript одним из самых запутанных понятий является поведение ключевого слова "this" в стрелочной и обычной функциях.
Приемы CSS-макетирования - floats и Flexbox
Приемы CSS-макетирования - floats и Flexbox
Здравствуйте, друзья-студенты! Готовы совершенствовать свои навыки веб-дизайна? Сегодня в нашем путешествии мы рассмотрим приемы CSS-верстки - в...
Тестирование функциональных ngrx-эффектов в Angular 16 с помощью Jest
В системе управления состояниями ngrx, совместимой с Angular 16, появились функциональные эффекты. Это здорово и делает код определенно легче для...
Концепция локализации и ее применение в приложениях React ⚡️
Концепция локализации и ее применение в приложениях React ⚡️
Локализация - это процесс адаптации приложения к различным языкам и культурным требованиям. Это позволяет пользователям получить опыт, соответствующий...
Пользовательский скаляр GraphQL
Пользовательский скаляр GraphQL
Листовые узлы системы типов GraphQL называются скалярами. Достигнув скалярного типа, невозможно спуститься дальше по иерархии типов. Скалярный тип...
0
1
69
2

Ответы 2

Боюсь, я никогда не видел способа настроить ведение журнала с помощью WIX по умолчанию.

Но действительно ли вам нужны журналы каждой установки? Вы также не можете попросить сотрудников снова вызвать установщик из командной строки, если установщик не работает при выполнении двойным щелчком? Это мой любимый способ.

Я не знаю, возможно ли это для вас, но есть другой способ - изменить регистрацию или работать с групповыми политиками: https://support.microsoft.com/en-us/help/223300/how-to-enable-windows-installer-logging

Если все это не работает, я думаю, вам действительно стоит обернуть установщик. Может быть, для вызова установщика будет достаточно batchfile.

С уважением, Патрик

Как ни странно, мне нужны только журналы сбойных установок. Врач, исцели себя! Я посмотрю на опубликованную вами ссылку на групповую политику. Кто знает? Это может быть именно то решение, которое мне нужно.

Bob 13.08.2018 17:15

Простота: Откровенно говоря, мне нравится уже упомянутый подход командный файл. Или выталкивать все через инструмент распространения (например, SCCM), но он явно недоступен для вас? Просто чтобы проверить. Большинство из нижеприведенных «вариантов» - это просто обходные пути, а не предпочтительные подходы.


Подробное ведение журнала по умолчанию: Насколько я понимаю, подробное ведение журнала включено по умолчанию для всех MSI и для самого пакета Burn? FireGiant - Запись файла журнала (снизу). Может, этого мало? Однако довольно просто сказать вашим клиентам, что журналы находятся в папке TEMP? Просто отсортируйте по измененному времени / дате, чтобы найти журналы сразу после установки?

Место записи журнала: Может быть, причина в том, что вам нужно разместить все журналы где-нибудь в легкодоступном для ваших клиентов месте, например, в папке на рабочем столе - или в текущая папка, из которого вы запускаете setup.exe? Или где-то конкретное - может, даже сетевой ресурс? В соответствии с тем, что требуется в этом вопросе. Если это ваше собственное приложение, я полагаю, вы могли бы использовать пользовательское приложение загрузчика (я его никогда не пробовал)? Но, как объясняют разработчики WiX в аналогичном вопросе, на который я ссылался, такое приложение имеет доступ ко всем путям журналов. Я полагаю, вы также можете показать содержимое журнала в диалоговом окне в конце установки? Я полагаю, что это возможно.


Безумный подход: И, кстати, жесткое кодирование пути вывода, похоже, работает в Bundle, но использовать это безумие, если только вы не создаете для внутреннего, корпоративного использования и не знаете, какой гарантированно будет выходной путь. По сути, добавление <Log PathVariable = "c:\installerlog.txt"/> под <Bundle>. Я не проверял, работает ли это для путей UNC.

Обертка EXE: Звучит неуклюже, но, думаю, должно сработать. Мне не нравится самораспаковывающиеся архивы (security issues, unexpected runtime dependencies, и т. д.), Но не могли бы вы просто поместить свой setup.exe в самораспаковывающийся архив с командной строкой для запуска вместо того, чтобы накатывать собственную оболочку со всем ее потенциалом ошибок? Я только вчера написал этот ответ на 7-Zip: Ошибка при создании пакета установщика 7-zip.

Кажется, вы можете создать оболочку с помощью такой команды (из обычного файла справки 7-Zip, а не из SDK):

 copy /b 7zSD.sfx + config.txt + archive.7z archive.exe

Командная строка из файла Файл справки 7-Zip.

  • Раздел: "-sfx (Create SFX archive) switch".
  • Дорожка (в файле справки): Command Line Version => Switches => -sfc (Create SFX Archive.)

config.txt:

;!@Install@!UTF-8!
Title = "Tester"
BeginPrompt = "Do you want to install Tester?"
ExecuteFile = "setup.exe"
ExecuteParameters = "/l \\Server\Logs\Tester\Tester.log"
;!@InstallEnd@!

Это всего лишь непроверенный макет, чтобы дать вам представление о том, как это может работать. Свертывание собственного EXE может работать нормально для внутренних приложений, но для распространения по всему миру меня всегда беспокоят действительно неожиданные и неожиданные ошибки (odd runtime dependencies, localization issues, weird OS incompatibilities, security software interference также огромны и т. д.) .

Пусковые установки от установленные инструменты развертывания были протестированы в реальной жизни - часто сотнями тысяч пользователей - или даже миллионами пользователей - я думаю, что трудно сопоставить с самодельными решениями.

Я не доверяю самораспаковывающимся архивам почти так же сильно, как правильным программам запуска setup.exe из установленных инструментов развертывания, но они, вероятно, будут лучше, чем самодельные решения, по "чистому пробегу" и предыдущим испытаниям в реальных условиях - при условии, что вы выберете установленный инструмент. Я не уверен, что 7-Zip - лучший инструмент в этом случае. Может быть, другой, более устоявшийся инструмент, такой как WinZip или WinRAR? Я не совсем уверен.


Некоторые ссылки:

Другие вопросы по теме