Изменить мой GUID компонента в wix?

Log4net может сделать это для Вас. Вы только записали бы что-то вроде этого:

logger.info("Message");

конфигурация А определит, перейдет ли печать к консоли, файлу или обоим.

26
задан Wolf 18 October 2016 в 09:39
поделиться

3 ответа

Общая концепция MSI заключается в том, что существует 1: 1 отображение между GUID компонента (уникальный идентификатор) и абсолютный путь (место установки / путь ключа). Полный путь, включая имя файла, если любой. Ознакомьтесь с обновлением ниже, чтобы узнать о новой функции Wix для автоматической магии. с этим.

Я использую несколько простых правил , чтобы иметь дело с чрезмерно сложными и бессмысленными правилами компонентов:

  • Всегда используйте отдельный компонент для каждого файла (даже для небинарных файлов). Это позволяет избежать всевозможных проблем. Есть несколько исключений:
    • Многофайловые сборки .NET должны быть в одном компоненте, поскольку они всегда должны устанавливаться / удаляться как единое целое.
    • Несколько других, общих типов файлов входят в «совпадающие пары» - они принадлежат друг другу. Часто это файлы содержимого и индексные файлы. В качестве примера рассмотрим файлы справки Microsoft:
      • Файлы .HLP и .CNT принадлежат друг другу.
      • Файлы .CHM и .CHI принадлежат друг другу.
    • Вероятно, существует несколько таких типов файлов, которые принадлежат друг другу и, следовательно, должны быть помещены в один компонент, чтобы они устанавливали / удалить вместе - я подозреваю, что некоторые файлы сертификатов могут быть кандидатами. Трудно составить определенный список. Просто спросите себя «всегда ли эти файлы принадлежат друг другу?» - чтобы они всегда появлялись парами, когда появляется новая версия? Если да, то установите их через тот же компонент. Установите версионный файл, если таковой имеется, в качестве ключевого файла.
    • Я хочу добавить файлов драйверов в качестве примера группы файлов, всегда принадлежащих друг другу: SampleDriver.cat , SampleDriver.inf , SampleDriver.sys , SampleDriver.cer . Все они должны совпадать как «единое целое». для развертывания.
  • Помните, что после того, как вы назначили GUID для компонента, он станет камнем преткновения для ключевого пути этого компонента (абсолютного пути). Если вы переместите файл в новое место или переименуете файл, присвойте ему новый GUID компонента (поскольку абсолютный путь отличается, это фактически новый идентификатор).
  • Таким образом, GUID компонентов привязаны к абсолютному месту установки, а не к конкретному файлу. GUID не следует за файлом, если он перемещается . Ссылка GUID учитывает абсолютное расположение, а не файл как таковой.
  • Не добавляйте и не удаляйте файлы из существующего компонента. В результате возникают всевозможные проблемы с обновлением и исправлением. Вот почему мне, как правило, нравится один файл на компонент.
  • Ссылки на компоненты - это гораздо больше, но я оставлю это как «обзор».

Некоторые примеры:

  • Вы переименовываете файл C: \ Program Files \ MyCompany \ MyApp \ MyFile.exe в C: \ Program Files \ MyCompany \ MyApp \ MyFile_NEW.exe . Что это означает для создания компонентов? Это новый абсолютный путь установки, поэтому вы создаете новый GUID для компонента хоста ИЛИ добавляете новый компонент и удаляете старый (что имеет тот же эффект).
  • Ваш обновленный MSI предоставляет новую версию MyFile .исполняемый файл. Расположение такое же, как и раньше, это означает, что GUID компонента не должен изменяться. Это тот же файл (идентификатор), только в другой версии.

UPDATE :

Auto Component-GUIDs : WIX теперь имеет новый автоматически генерируемый GUID компонента функция, которая вычисляет GUID до тех пор, пока целевой путь \ Program Files \ MyCompany \ MyApp \ MyFile.exe в C: \ Program Files \ MyCompany \ MyApp \ MyFile_NEW.exe . Что это означает для создания компонентов? Это новый абсолютный путь установки, поэтому вы создаете новый GUID для компонента хостинга ИЛИ добавляете новый компонент и удаляете старый (что имеет тот же эффект).

  • Обновленный MSI предоставляет новую версию MyFile .исполняемый файл. Расположение такое же, как и раньше, это означает, что GUID компонента не должен изменяться. Это тот же файл (идентификатор), только в другой версии.

  • UPDATE :

    Auto Component-GUIDs : WIX теперь имеет новый автоматически генерируемый GUID компонента функция, которая вычисляет GUID до тех пор, пока целевой путь \ Program Files \ MyCompany \ MyApp \ MyFile.exe в C: \ Program Files \ MyCompany \ MyApp \ MyFile_NEW.exe . Что это означает для создания компонентов? Это новый абсолютный путь установки, поэтому вы создаете новый GUID для компонента хоста ИЛИ добавляете новый компонент и удаляете старый (что имеет тот же эффект).

  • Ваш обновленный MSI предоставляет новую версию MyFile .исполняемый файл. Расположение такое же, как и раньше, это означает, что GUID компонента не должен изменяться. Это тот же файл (идентификатор), только в другой версии.

  • UPDATE :

    Auto Component-GUIDs : WIX теперь имеет новый автоматически генерируемый GUID компонента функция, которая вычисляет GUID до тех пор, пока целевой путь Что это означает для создания компонентов? Это новый абсолютный путь установки, поэтому вы создаете новый GUID для компонента хоста ИЛИ добавляете новый компонент и удаляете старый (что имеет тот же эффект).

  • Ваш обновленный MSI предоставляет новую версию MyFile .исполняемый файл. Расположение такое же, как и раньше, это означает, что GUID компонента не должен изменяться. Это тот же файл (идентификатор), только в другой версии.

  • UPDATE :

    Auto Component-GUIDs : WIX теперь имеет новый автоматически генерируемый GUID компонента функция, которая вычисляет GUID до тех пор, пока целевой путь Что это означает для создания компонентов? Это новый абсолютный путь установки, поэтому вы создаете новый GUID для компонента хостинга ИЛИ добавляете новый компонент и удаляете старый (что имеет тот же эффект).

  • Обновленный MSI предоставляет новую версию MyFile .исполняемый файл. Расположение такое же, как и раньше, это означает, что GUID компонента не должен изменяться. Это тот же файл (идентификатор), только в другой версии.

  • UPDATE :

    Auto Component-GUIDs : WIX теперь имеет новый автоматически генерируемый GUID компонента функция, которая вычисляет GUID до тех пор, пока целевой путь Расположение такое же, как и раньше, это означает, что GUID компонента не должен изменяться. Это тот же файл (идентификатор), только в другой версии.


    UPDATE :

    Auto Component-GUIDs : WIX теперь имеет новый автоматически генерируемый GUID компонента функция, которая вычисляет GUID до тех пор, пока целевой путь Расположение такое же, как и раньше, это означает, что GUID компонента не должен изменяться. Это тот же файл (идентификатор), только в другой версии.


    UPDATE :

    Auto Component-GUIDs : WIX теперь имеет новый автоматически генерируемый GUID компонента функция, которая вычисляет GUID до тех пор, пока целевой путь остается такой же. Я не пробовал, если честно, но многим кажется использовать его без проблем, и Роб Меншинг (автор Wix) утверждает это безопасно для нормального использования . В качестве концепции я очень рекомендую это поскольку в нем есть авто-магия и он защищает вас от некоторых сложность.

    Минимальная разметка WiX : также обратите внимание, что вы можете не указывать множество исходных атрибутов из ваш XML-файл Wix и полагаться на настройки Wix по умолчанию, а не на жесткие значения кодирования.

    47
    ответ дан 28 November 2019 в 06:36
    поделиться

    Вы никогда не меняете Component / @ Guid. Вы также никогда не меняете набор ресурсов (File, RegistryKey, Shortcut, TypeLib и т. Д.) В Компоненте. Когда у вас есть новый ресурс, вы должны создать новый компонент с новым @Guid. По-настоящему сложная часть состоит в том, что новый компонент не может перекрываться (подумайте, путь к файлу, путь к ключу реестра, библиотека типов и т. Д.) Со старым компонентом.

    Это в основном правила для компонентов, проверьте: http : //robmensching.com/blog/posts/2003/10/18/Component-Rules-101 .

    17
    ответ дан 28 November 2019 в 06:36
    поделиться

    Взгляните на Учебное пособие WiX, Файлы внутри , чтобы получить подробное объяснение правил для компонентов. По сути, здесь говорится, что вы никогда не меняете GUID компонента, поскольку это означает отказ от старого компонента и создание нового компонента.

    0
    ответ дан 28 November 2019 в 06:36
    поделиться
    Другие вопросы по тегам:

    Похожие вопросы: