Wix скачать бесплатно на русском для windows

Как скачать и установить Wix Owner: сайты и приложения для ПК /Mac.

Wix Owner: сайты и приложения для ПК: Как скачать и установить на ПК Windows

 

 

 

 

 

 

Загрузите приложение, например Wix Owner: сайты и приложения, на ПК с Windows! Прямая загрузка ниже:

SN Приложение Скачать Рейтинг Разработчик
1. Kiwix JS Kiwix JS скачать

4.7/5
11 рейтинг
Kiwix

Кроме того, следуйте приведенным ниже инструкциям, чтобы использовать Wix Owner: сайты и приложения на своем ПК:

Чтобы получить Wix Owner: сайты и приложения работать на вашем компьютере легко. Вам обязательно нужно обратить внимание на шаги, перечисленные ниже. Мы поможем вам скачать и установить Wix Owner: сайты и приложения на вашем компьютере в 4 простых шага ниже:

1: Загрузить эмулятор приложения Andriod

Эмулятор имитирует / эмулирует устройство Android на вашем компьютере, облегчая установку и запуск приложений Android, не выходя из вашего ПК. Для начала вы можете выбрать одно из следующих приложений:

i. Nox App .

ii. Bluestacks .

Я рекомендую Bluestacks, так как он очень популярен во многих онлайн-уроках 

2: Теперь установите программный эмулятор на ПК с Windows

Если вы успешно загрузили Bluestacks.exe или Nox.exe, перейдите в папку «Загрузки» на вашем компьютере или в любое место, где вы обычно храните загруженные файлы.

  1. Найдя его, нажмите его. Начнется процесс установки.
  2. Примите лицензионное соглашение EULA и следуйте инструкциям на экране.

Если вы сделаете все правильно, Программное обеспечение будет успешно установлено.

3: С помощью Wix Owner: сайты и приложения на компьютере

После установки откройте приложение эмулятора и введите Wix Owner: сайты и приложения в строке поиска. Теперь нажмите Поиск. Вы легко увидите желаемое приложение. Нажмите здесь. Это будет отображаться Wix Owner: сайты и приложения в вашем программном обеспечении эмулятора. Нажмите кнопку Установить, и ваше приложение начнет установку. Чтобы использовать приложение, сделайте это:

Вы увидите значок «Все приложения».

Нажмите, чтобы перейти на страницу, содержащую все ваши установленные приложения.

Вы увидите app icon. Нажмите, чтобы начать использовать ваше приложение. Вы можете начать использовать Wix Owner: сайты и приложения для ПК!

Другие источники загрузки

Скачать для Android — Ссылка 1 ↲

Бесплатно В iTunes ↲

отказ

Wix Owner: сайты и приложения разработан Wix.com Inc.. Этот сайт не имеет прямого отношения к разработчикам. Все товарные знаки, зарегистрированные товарные знаки, названия продуктов и названия компаний или логотипы, упомянутые здесь, являются собственностью их соответствующих владельцев.

Если вы считаете, что это приложение / игра нарушает ваши авторские права, пожалуйста, Свяжитесь с нами здесь. Мы DMCA-совместимы и рады работать с вами. Пожалуйста, найдите DMCA страница здесь.

Wix Owner: создание сайтов на ПК

Wix Owner: создание сайтов, исходящий от разработчика Wix, в прошлом работал на системе Android.

Теперь вы можете без проблем играть в Wix Owner: создание сайтов на ПК с помощью GameLoop.

Загрузите его в библиотеке GameLoop или результатах поиска. Больше не нужно смотреть на аккумулятор или разочаровывать звонки в неподходящее время.

Просто наслаждайтесь Wix Owner: создание сайтов на ПК на большом экране бесплатно!

Wix Owner: создание сайтов Введение

Создавайте и редактируйте сайты и их мобильную версию для своего бизнеса и сообщества с помощью мобильного приложения Wix.

Более 200 миллионов людей во всем мире используют конструктор сайтов Wix для создания профессиональных сайтов.

Профессиональные инструменты Wix для бизнеса, маркетинга и SEO позволят создать сайт для любой цели, будь то блог, интернет-магазин, предоставление услуг или организация мероприятий.

Создайте сайт и развивайте свой бренд

• Создайте сайт, загружайте на него видео и изображения, а также размещайте посты для блога с лучшим конструктором сайтов на рынке.

• Используйте надёжный веб-хостинг

• Добавляйте веб-страницы, созданные на основе дизайнерских шаблонов

• Расширьте своё присутствие на онлайн-рынке — без единой строчки кода

Создайте свой интернет-магазин и управляйте им

• Создайте онлайн-магазин, чтобы демонстрировать и продавать товары и коллекции.

• Принимайте онлайн-платежи от покупателей вашего интернет-магазина.

• Управляйте заказами и доставкой.

• Предлагайте купоны и особые скидки.

Станьте блогером

• Пишите посты с компьютера или мобильного устройства и делитесь ими.

• Воплощайте идеи в жизнь с помощью шаблонов веб-сайтов и ярких дизайн-решений для блога.

• Делитесь свежим контентом с подписчиками.

• Предоставьте читателям возможность делиться вашими постами, комментировать и отслеживать их.

• Управляйте соавторами и предоставьте им доступ к публикации постов в вашем блоге.

• Отслеживайте статистику и веб-аналитику блога с помощью SEO-инструментов от Wix.

Предлагайте услуги и товары и принимайте платежи

• Создавайте и обновляйте услуги.

• Предоставляйте возможность бронирования онлайн.

• Получайте оплату онлайн без комиссии.

• Составляйте тарифы.

• Управляйте сотрудниками и участниками

Создавайте ивенты и управляйте ими

• Редактируйте прошедшие, текущие и будущие мероприятия.

• Продавайте билеты онлайн.

• Отправляйте приглашения, получайте согласия на участие и держите гостей в курсе событий.

• Создавайте обсуждения и загружайте фотографии.

Участвуйте в жизни своего сообщества онлайн

• Общайтесь с участниками и посетителями сайта напрямую с помощью чата на сайте или в мобильном приложении Wix.

• Оставайтесь на связи с клиентами.

• Получайте обновления, чтобы понимать уровень активности вашего сайта.

• Создавайте группы по интересам.

• Управляйте дискуссиями и форумами на определенные темы.

• Создавайте форумы и групповые чаты с участниками.

WiX Toolset 3.10.1.2213

WiX Toolset — полезным коллекция инструментов для многих программистов, которые создают инсталляторы для приложений. Этот набор утилит командной строки предназначен для обработки ряда файлов, а также для автоматизации процесса сборки каждого выпуска. При создании каждой новой программы программисты имеют дело с несколькими ресурсами, файлами с исходным кодом и библиотеками. Все эти файлы должны находиться в одном каталоге для успешного функционирования созданного приложения. Подготовки развернутого пакета является важным шагом. WiX Toolset представляет ряд утилит, необходимых для предварительной обработки, компиляции, компоновки файлов. Все это необходимо, чтобы построить инсталлятор, который доставляется конечному пользователю. Поддерживаемые выходные файлы включают MSI инсталляторы, патчи, модули и преобразования.

Скриншот WiX Toolset #1
Скриншот WiX Toolset #2
Скриншот WiX Toolset #3

Особенности программы

— Позволяет создавать качественные инсталляционные пакеты.

— Представляет набор нужных инструментов для создания инсталляторов.

— Может генерировать базы данных SQL или веб-сайтов IIS посредством расширений.

— Расширения могут быть доступны из Visual Studio либо при применении одного из инструментов командной строки.

— Имеет довольно обширную документацию.

— Хороший инструмент для построения Windows-приложений.

— Поддерживает выходные файлы, включающие MSI инсталляторы, патчи, модули и преобразования.

— Включает родные библиотеки, с которыми код написать проще.

Недостатки программы

— Отсутствует русский язык.

Системные требования

— Процессор с тактовой частотой 800 MHz или более мощный.

Оперативная память 128 Мб или больше.

Свободное место на жёстком диске от 25 Мб.

Архитектура с разрядностью 32 бит или 64 бит (x86 или x64).

— Операционная система Windows XP, Windows Vista, Windows 7, Windows 8, Windows 10

Инсталляторы: Таблицы сравнения

Раскрыть список

Официальный сайт: wixtoolset.org

Разработчик:
Статус: Freeware
Платный аналог: Flexera InstallShield

Детальная информация WiX Toolset

Поддерживаемые типы файлов:
WXI,
WXL,
WXS,
WIXOBJ,
WIXOUT,
WIXLIB,
WIXPDB,
WIXMSP,
WIXMST,
MSI
Полный список

Свойства файла:
Подробная информация
Контрольные суммы

wix.toolset.setup.exe

File Name                       : wix.toolset.setup.exe
Directory                       : files.xetcom.com/downloads/software/system/development
File Size                       : 24 MB
File Modification Date/Time     : 2015:11:25 16:03:58+01:00
File Type                       : Win32 EXE
MIME Type                       : application/octet-stream
Machine Type                    : Intel 386 or later, and compatibles
Time Stamp                      : 2015:10:14 00:59:40+02:00
PE Type                         : PE32
Linker Version                  : 14.0
Code Size                       : 297984
Initialized Data Size           : 254976
Uninitialized Data Size         : 0
Entry Point                     : 0x2a7fd
OS Version                      : 5.1
Image Version                   : 0.0
Subsystem Version               : 5.1
Subsystem                       : Windows GUI
File Version Number             : 3.10.1.2213
Product Version Number          : 3.10.1.2213
File Flags Mask                 : 0x003f
File Flags                      : (none)
File OS                         : Win32
Object File Type                : Executable application
File Subtype                    : 0
Language Code                   : English (U.S.)
Character Set                   : Windows, Latin1
Company Name                    : Outercurve Foundation
File Description                : WiX Toolset v3.10.1.2213
File Version                    : 3.10.1.2213
Internal Name                   : setup
Legal Copyright                 : Copyright (c) Outercurve Foundation. All rights reserved.
Original Filename               : WiX310.exe
Product Name                    : WiX Toolset v3.10.1.2213
Product Version                 : 3.10.1.2213

wix.toolset.portable.zip

Length      Date    Time    Name
---------  ---------- -----   ----
   457728  2015-10-13 15:59   x86/burn.exe
   293707  2015-10-13 15:59   difxapp_x64.wixlib
  1320717  2015-10-13 15:59   doc/WiX.chm
    64830  2015-10-13 15:59   doc/DTF.chm
  1589892  2015-10-13 15:59   doc/DTFAPI.chm
    36908  2015-10-13 15:58   doc/thmutil.xsd
    13664  2015-10-13 15:58   doc/bal.xsd
    45128  2015-10-13 15:58   doc/complus.xsd
    12897  2015-10-13 15:58   doc/Dependency.xsd
     6981  2015-10-13 15:58   doc/difxapp.xsd
    10373  2015-10-13 15:58   doc/firewall.xsd
     7257  2015-10-13 15:58   doc/gaming.xsd
     6057  2015-10-13 15:58   doc/http.xsd
    64023  2015-10-13 15:58   doc/iis.xsd
     9889  2015-10-13 15:58   doc/lux.xsd
     5829  2015-10-13 15:58   doc/msmq.xsd
    14327  2015-10-13 15:58   doc/netfx.xsd
     8449  2015-10-13 15:58   doc/ps.xsd
    21629  2015-10-13 15:58   doc/sql.xsd
     7945  2015-10-13 15:58   doc/tag.xsd
    86827  2015-10-13 15:58   doc/util.xsd
    17043  2015-10-13 15:58   doc/vs.xsd
   693709  2015-10-13 15:58   doc/wix.xsd
     8062  2015-10-13 15:58   doc/wixloc.xsd
    32768  2015-10-13 15:58   sdk/MsgGen.exe
    45056  2015-10-13 15:58   sdk/XsdGen.exe
    81920  2015-10-13 15:58   sdk/DocCompiler.exe
    24576  2015-10-13 15:58   sdk/XsdStitch.exe
    81920  2015-10-13 15:59   sdk/BootstrapperCore.dll
     1503  2015-10-13 15:58   sdk/BootstrapperCore.config
   167098  2015-10-13 15:59   sdk/BootstrapperCore.xml
     8801  2015-10-13 15:58   sdk/wix.ca.targets
    36864  2015-10-13 15:59   sdk/Microsoft.Deployment.Compression.dll
   120848  2015-10-13 15:59   sdk/Microsoft.Deployment.Compression.xml
    49152  2015-10-13 15:59   sdk/Microsoft.Deployment.Compression.Cab.dll
    27004  2015-10-13 15:59   sdk/Microsoft.Deployment.Compression.Cab.xml
    40960  2015-10-13 15:59   sdk/Microsoft.Deployment.Compression.Zip.dll
    30842  2015-10-13 15:59   sdk/Microsoft.Deployment.Compression.Zip.xml
    45056  2015-10-13 15:59   sdk/Microsoft.Deployment.Resources.dll
    29520  2015-10-13 15:59   sdk/Microsoft.Deployment.Resources.xml
   176128  2015-10-13 15:59   sdk/Microsoft.Deployment.WindowsInstaller.dll
   486900  2015-10-13 15:59   sdk/Microsoft.Deployment.WindowsInstaller.xml
    53248  2015-10-13 15:59   sdk/Microsoft.Deployment.WindowsInstaller.Linq.dll
    25207  2015-10-13 15:59   sdk/Microsoft.Deployment.WindowsInstaller.Linq.xml
    57344  2015-10-13 15:59   sdk/Microsoft.Deployment.WindowsInstaller.Package.dll
    43724  2015-10-13 15:59   sdk/Microsoft.Deployment.WindowsInstaller.Package.xml
    28672  2015-10-13 15:59   sdk/MakeSfxCA.exe
      589  2015-10-13 15:58   sdk/MakeSfxCA.exe.config
   177664  2015-10-13 15:59   sdk/x86/sfxca.dll
   200192  2015-10-13 15:59   sdk/x64/sfxca.dll
    27480  2015-10-13 15:58   sdk/inc/IBootstrapperApplication.h
     6910  2015-10-13 15:58   sdk/inc/IBootstrapperEngine.h
     7192  2015-10-13 15:58   sdk/inc/custommsierrors.h
      804  2015-10-13 15:58   sdk/inc/wcalog.h
    10701  2015-10-13 15:58   sdk/inc/wcautil.h
     1028  2015-10-13 15:58   sdk/inc/wcawow64.h
     5667  2015-10-13 15:58   sdk/inc/wcawrapquery.h
     4520  2015-10-13 15:58   sdk/inc/aclutil.h
     2351  2015-10-13 15:58   sdk/inc/apuputil.h
     3136  2015-10-13 15:58   sdk/inc/atomutil.h
     2547  2015-10-13 15:58   sdk/inc/buffutil.h
     1413  2015-10-13 15:58   sdk/inc/butil.h
     2324  2015-10-13 15:58   sdk/inc/cabcutil.h
     2366  2015-10-13 15:58   sdk/inc/cabutil.h
     2318  2015-10-13 15:58   sdk/inc/certutil.h
     3728  2015-10-13 15:58   sdk/inc/conutil.h
     2967  2015-10-13 15:58   sdk/inc/cryputil.h
     2646  2015-10-13 15:58   sdk/inc/dictutil.h
     1665  2015-10-13 15:58   sdk/inc/dirutil.h
     1849  2015-10-13 15:58   sdk/inc/dlutil.h
     9917  2015-10-13 15:58   sdk/inc/dutil.h
     6554  2015-10-13 15:58   sdk/inc/eseutil.h
     6958  2015-10-13 15:58   sdk/inc/fileutil.h
     1534  2015-10-13 15:58   sdk/inc/gdiputil.h
    10218  2015-10-13 15:58   sdk/inc/iis7util.h
     1334  2015-10-13 15:58   sdk/inc/inetutil.h
     2544  2015-10-13 15:58   sdk/inc/iniutil.h
     2666  2015-10-13 15:58   sdk/inc/jsonutil.h
     4034  2015-10-13 15:58   sdk/inc/locutil.h
     5471  2015-10-13 15:58   sdk/inc/logutil.h
     1784  2015-10-13 15:58   sdk/inc/memutil.h
     1690  2015-10-13 15:58   sdk/inc/metautil.h
     1311  2015-10-13 15:58   sdk/inc/osutil.h
     9185  2015-10-13 15:58   sdk/inc/pathutil.h
      923  2015-10-13 15:58   sdk/inc/perfutil.h
     1675  2015-10-13 15:58   sdk/inc/polcutil.h
     2413  2015-10-13 15:58   sdk/inc/procutil.h
     7011  2015-10-13 15:58   sdk/inc/regutil.h
     1393  2015-10-13 15:58   sdk/inc/resrutil.h
     1160  2015-10-13 15:58   sdk/inc/reswutil.h
     1657  2015-10-13 15:58   sdk/inc/rexutil.h
     1441  2015-10-13 15:58   sdk/inc/rmutil.h
     2164  2015-10-13 15:58   sdk/inc/rssutil.h
     8573  2015-10-13 15:58   sdk/inc/sceutil.h
     1673  2015-10-13 15:58   sdk/inc/shelutil.h
     4385  2015-10-13 15:58   sdk/inc/sqlutil.h
     1716  2015-10-13 15:58   sdk/inc/srputil.h
     9087  2015-10-13 15:58   sdk/inc/strutil.h
      913  2015-10-13 15:58   sdk/inc/svcutil.h
    16657  2015-10-13 15:58   sdk/inc/thmutil.h
     1214  2015-10-13 15:58   sdk/inc/timeutil.h
     2636  2015-10-13 15:58   sdk/inc/uriutil.h
     1216  2015-10-13 15:58   sdk/inc/userutil.h
    12003  2015-10-13 15:58   sdk/inc/wiutil.h
      894  2015-10-13 15:58   sdk/inc/wuautil.h
     6481  2015-10-13 15:58   sdk/inc/xmlutil.h
    20228  2015-10-13 15:58   sdk/inc/BalBaseBootstrapperApplication.h
     2093  2015-10-13 15:58   sdk/inc/balcondition.h
     3344  2015-10-13 15:58   sdk/inc/balinfo.h
     2777  2015-10-13 15:58   sdk/inc/balretry.h
     5405  2015-10-13 15:58   sdk/inc/balutil.h
     1084  2015-10-13 15:58   sdk/inc/IBootstrapperBAFunction.h
     6009  2015-10-13 15:58   sdk/inc/deputil.h
  1091944  2015-10-13 15:59   sdk/vs2010/lib/x64/deputil.lib
  1267142  2015-10-13 15:59   sdk/vs2012/lib/x64/deputil.lib
  1267064  2015-10-13 15:59   sdk/vs2013/lib/x64/deputil.lib
  1295830  2015-10-13 15:59   sdk/vs2015/lib/x64/deputil.lib
  3960568  2015-10-13 15:59   sdk/vs2010/lib/x64/dutil.lib
  4859332  2015-10-13 15:59   sdk/vs2012/lib/x64/dutil.lib
  4857296  2015-10-13 15:59   sdk/vs2013/lib/x64/dutil.lib
  5360604  2015-10-13 15:59   sdk/vs2015/lib/x64/dutil.lib
  1346158  2015-10-13 15:59   sdk/vs2010/lib/x64/wcautil.lib
  1533688  2015-10-13 15:59   sdk/vs2012/lib/x64/wcautil.lib
  1533800  2015-10-13 15:59   sdk/vs2013/lib/x64/wcautil.lib
  1589246  2015-10-13 15:59   sdk/vs2015/lib/x64/wcautil.lib
  1162342  2015-10-13 15:59   sdk/vs2010/lib/x86/balutil.lib
  1353784  2015-10-13 15:59   sdk/vs2012/lib/x86/balutil.lib
  1354156  2015-10-13 15:59   sdk/vs2013/lib/x86/balutil.lib
  1376220  2015-10-13 15:59   sdk/vs2015/lib/x86/balutil.lib
  1083426  2015-10-13 15:59   sdk/vs2010/lib/x86/deputil.lib
  1251106  2015-10-13 15:59   sdk/vs2012/lib/x86/deputil.lib
  1251026  2015-10-13 15:59   sdk/vs2013/lib/x86/deputil.lib
  1279970  2015-10-13 15:59   sdk/vs2015/lib/x86/deputil.lib
  3939372  2015-10-13 15:59   sdk/vs2010/lib/x86/dutil.lib
  4727148  2015-10-13 15:59   sdk/vs2012/lib/x86/dutil.lib
  4727536  2015-10-13 15:59   sdk/vs2013/lib/x86/dutil.lib
  5293592  2015-10-13 15:59   sdk/vs2015/lib/x86/dutil.lib
  1332106  2015-10-13 15:59   sdk/vs2010/lib/x86/wcautil.lib
  1508380  2015-10-13 15:59   sdk/vs2012/lib/x86/wcautil.lib
  1508456  2015-10-13 15:59   sdk/vs2013/lib/x86/wcautil.lib
  1569726  2015-10-13 15:59   sdk/vs2015/lib/x86/wcautil.lib
    28672  2015-10-13 15:59   candle.exe
      669  2015-10-13 15:58   candle.exe.config
    28672  2015-10-13 15:59   dark.exe
      967  2015-10-13 15:58   dark.exe.config
    28672  2015-10-13 15:59   heat.exe
      797  2015-10-13 15:58   heat.exe.config
    24576  2015-10-13 15:59   insignia.exe
      589  2015-10-13 15:58   insignia.exe.config
    32768  2015-10-13 15:59   light.exe
      669  2015-10-13 15:58   light.exe.config
    28672  2015-10-13 15:59   lit.exe
      669  2015-10-13 15:58   lit.exe.config
    32768  2015-10-13 15:59   melt.exe
      669  2015-10-13 15:58   melt.exe.config
    36864  2015-10-13 15:59   Microsoft.Deployment.Compression.dll
    49152  2015-10-13 15:59   Microsoft.Deployment.Compression.Cab.dll
    45056  2015-10-13 15:59   Microsoft.Deployment.Resources.dll
   176128  2015-10-13 15:59   Microsoft.Deployment.WindowsInstaller.dll
    57344  2015-10-13 15:59   Microsoft.Deployment.WindowsInstaller.Package.dll
    32768  2015-10-13 15:59   pyro.exe
      669  2015-10-13 15:58   pyro.exe.config
    24576  2015-10-13 15:59   retina.exe
      628  2015-10-13 15:58   retina.exe.config
    49152  2015-10-13 15:59   shine.exe
      495  2015-10-13 15:58   shine.exe.config
    28672  2015-10-13 15:59   smoke.exe
      669  2015-10-13 15:58   smoke.exe.config
   140800  2015-10-13 15:59   ThmViewer.exe
    32768  2015-10-13 15:59   torch.exe
      669  2015-10-13 15:58   torch.exe.config
    20480  2015-10-13 15:59   wconsole.dll
   115712  2015-10-13 15:59   winterop.dll
  1748992  2015-10-13 15:59   wix.dll
     2567  2015-10-13 15:58   wix.targets
   147059  2015-10-13 15:58   wix200x.targets
   147446  2015-10-13 15:58   wix2010.targets
    90112  2015-10-13 15:59   WixCop.exe
    73728  2015-10-13 15:59   WixTasks.dll
   694784  2015-10-13 15:58   darice.cub
   501248  2015-10-13 15:58   mergemod.cub
   169832  2015-10-13 15:58   mergemod.dll
    61952  2015-10-13 15:58   mspatchc.dll
   323584  2015-10-13 15:59   WixBalExtension.dll
   561152  2015-10-13 15:59   WixComPlusExtension.dll
    28672  2015-10-13 15:59   WixDifxAppExtension.dll
   118784  2015-10-13 15:59   WixDependencyExtension.dll
    81920  2015-10-13 15:59   WixDirectXExtension.dll
   114688  2015-10-13 15:59   WixFirewallExtension.dll
   110592  2015-10-13 15:59   WixGamingExtension.dll
   110592  2015-10-13 15:59   WixHttpExtension.dll
   442368  2015-10-13 16:00   WixIIsExtension.dll
   180224  2015-10-13 15:59   WixMsmqExtension.dll
   352256  2015-10-13 16:00   WixNetFxExtension.dll
    36864  2015-10-13 15:59   WixPSExtension.dll
   311296  2015-10-13 15:59   WixSqlExtension.dll
    45056  2015-10-13 15:59   WixTagExtension.dll
  3674112  2015-10-13 15:59   WixUIExtension.dll
   827392  2015-10-13 15:59   WixUtilExtension.dll
  1007616  2015-10-13 15:59   WixVSExtension.dll
    24576  2015-10-13 15:59   WixVSExtension.MSBuild12.dll
    24576  2015-10-13 15:59   WixVSExtension.MSBuild14.dll
   203952  2015-10-13 15:59   difxapp_x86.wixlib
    32768  2015-10-13 15:59   lux.exe
      770  2015-10-13 15:58   lux.exe.config
    28672  2015-10-13 15:59   nit.exe
      496  2015-10-13 15:58   nit.exe.config
   221184  2015-10-13 15:59   WixLuxExtension.dll
     4375  2015-10-13 15:58   lux.targets
    28672  2015-10-13 15:59   LuxTasks.dll
---------                     -------
 85402842                     210 files

wix.toolset.setup.exe

CRC32: 04190CCC
MD5: 745C0A3F6004E8291B89AD0CF912829A
SHA1: 8C1B7BDC34D11A72E19F4ACEBB1889E03729FD11
SHA256: 489e67b2e63333d6747306111bda6a123b7bc71954a0bd39493ed1bcd81bb74f

wix.toolset.portable.zip

CRC32 : B1E34DFB
MD5 : ED65BF08BBEF6D79EC827046F2325E2E
SHA1 : A0C0A2112C5733D45E227BFBB9169968C97AEFCB
SHA256 : 51e05636fa9d73c50a45d8edfe0406e811d529877c5b2cc5871bcd648003860a

Платный аналог: Flexera InstallShield

Взаимосвязь: Нет данных

В статье я хотел бы поделиться своим опытом написания инсталлятора для Windows с использованием инструмента Windows Installer XML Toolset (далее — Wix). К сожалению, несмотря на всю мощь данного инструмента, его использование сильно осложняется куцей документацией, старенькими кукбуками, вялыми ветками форумов и вытеснением .msi и .exe пакетов контейнеризацией. Однако, сегодня продолжают активно развиваться и создаваться программные продукты требующие развертывания на виндовой машине с использованием традицонных установочных пакетов.

Прежде, чем мы преступим к написанию инсталлятора нужно решить, что мы будем устанавливать. По большому счету, инструментарий Wix не ограничивает разработчика в технологиях на которых должен быть написан продукт, который будет развернут на машине пользователя. Главное условие, чтобы на машине пользователя была установлена соответствующая версия Windows с пакетами, необходимыми для запуска вашего продукта (кстати, wix позволяет в установочный пакет запихнуть в том числе и необходимые компоненты для настройки окружения, но об этом поговорим позже).

Для нашего инсталлятора предлагаю использовать дефолтный проект Blazor: с одной стороны нам не потребуется писать код устанавливаемого проекта, а с другой у нас будет достаточно высокий потенциал для костылизации, чтобы изучить возможности Wix toolset.

Теория

Прежде чем приступить к практической части предлагаю ускоренный ликбез по технологии Windows installer и wix toolset, что поможет читателю понять мотивы, которыми руководствуются команды разработчиков вставая на путь, вымощенный граблями.

Начнем с того, что Wix toolset – это набор инструментов, позволяющий создавать установочные пакеты Windows installer на основе .xml-описания, который включает в себя консольные утилиты, плагин для работы Visual Studio и Rider, несколько тем оформления инсталлятора (глобально они отличаются «глубиной» диалогов, определяющей свободу пользователя в процессе установки), а также средства создания бутстрапера (пожалуй, дословный перевод «установщик» в данном случае не особо применим).

Windows installer, в свою очередь, представляет собой подсистему Windows для развертывания программного обеспечения с использованием установочных пакетов .msi (Microsoft Installer). Не погружаясь в историю создания и эволюции данной подсистемы (кому интересно, можете поискать информацию о инсталляторе с кодовым названием Darwin) предлагаю сразу перейти к ее функционалу.

Так, ключевую ценность данной подсистемы представляет высокая гибкость процесса установки, обновления и удаления программ, что обеспечивается:

  • Возможностью отката на любом этапе установки включая апгрейд и удаление софта

  • Предоставлением доступа к работе с реестрами включая чтение и удаление записей

  • Гибкостью работы с правами доступа при установке софта

  • Обеспечением возможности кастомизации интерфейса установки, включая возможность добавления рекламы

  • Предоставлением доступа к ресурсам командной строки и возможности запуска скриптов на разных этапах работы инсталлятора

  • Наличием специализированного ПО, предоставляемого Microsoft для устранения проблем, возникших после запуска инсталляционного пакета с уязвимостью (например, если ошибка приводит к невозможности удаления установленного софта)

Сам инсталлятор представляет собой файл с расширением .msi внутри которого располагается реляционная база данных, описывающая логику установки программного обеспечения, а также хранит данные, необходимые для развертывания приложения. Для работы с инсталляционными пакетами вам потребуется установить Windows SDK. Основным инструментом для взаимодействия с файлами .msi является Orca – программа, позволяющая открывать, редактировать и создавать БД инсталляционных пакетов. Для ее установки вам потребуется перейти в директорию C:Program Files (x86)Windows Kits10bin10.0.22000.0×86 после установки Windows SDK.

Давайте посмотрим на пример содержимого инсталляционного пакета, который мы с вами создадим с помощью WIX для проекта Blazor. Его содержимое выглядит так:

В приведенном примере инсталлятор содержит 35 таблиц. Это число не является фиксированным. Только Orca предлагает включение до 97 шаблонов таблиц, помимо которых можно создавать пользовательские.

Разберем по пунктам:

  • в колонке File хранится ID файла, который будет установлен в систему. Он выполняет роль первичного ключа для доступа и связывает сущности из таблицы MsiFileHash и Component

  • В Component_ лежит значение соответствующее полю KeyPath из таблицы Component, которое служит для реализации функционала, связанного с восстановлением и обновлением ПО средствами WindowsInstaller

  • В FileName хранится непосредственно имя файла

  • FileSize, Version и Language берутся из метаданных устанавливаемого файла

  • Atributes – свойства устанавливаемого файла, определяющие его доступность для пользователей, а также поведение при обновлении, восстановлении и удалении продукта. Подробнее можно ознакомиться по ссылке

  • Sequence определяет положение файла в инсталляторе и должен соответствовать его номеру в cabinet-файле.

Если, вы еще не сильно утомились сухой теорией, то давайте посмотрим еще на одну ключевую таблицу – Component:

В этой таблице описаны компоненты:  .

  • В колонке Component лежит название компонента, которое должно быть уникальным. Оно может быть создано как разработчиком, так и средствами автоматизации. Главное, что с помощью этого значения компонент связывается с файлом, который будет в него завернут.

  • ComponentId – GUID, который должен быть сгенерирован для каждого компонента. Фактически это первичный ключ в таблице компонентов.

  • Колонка Directory_ связывает компонент с виртуальной директорией, которая будет ассоциирована с местом установки конкретного компонента.

Думаю, на этом кратенький рассказ о внутреннем устройстве базы данных пакета .msi можно закончить. Конечно, кроме файлов, компонентов и папок, база данных инсталлятора включает описание опций (feature), действий (action), UI и пр. При наличии интереса у читателей, готов подготовить более подробный обзор структуры .msi пакетов.

Практика

Для того, чтобы упростить разработку инсталляционных пакетов и облегчить дальнейшую поддержку были разработаны различные инструменты, позволяющие визуализировать и автоматизировать некоторые рутинные процессы. К таким продуктам, например, относятся InstallShield, InnoSetup (не позволяет создавать .msi-файлы — только .exe) и AdvancedInstaller. Несмотря на удобство использования, данные продукты являются платными (стоимость некоторых продуктов довольно кусачая за исключением Inno Setup — он бесплатный), не имеют открытых репозиториев или создают сложности при корпоративной разработке при мерже проектов. Поэтому наиболее очевидным выбором для большинства интерпрайз-проектов является использование The Windows Installer XML (WiX) toolset.

Для начала работы с этим инструментом вам необходимо произвести его установку. Перейдите по ссылке и скачайте и установите WiX Toolset build tools и WiX Toolset Visual Studio Extension (в соответствии с используемой вами версией Visual Studio). Также, есть расширение для Rider – его можно найти в маркете IDE.

После установки компонентов Wix предлагаю перейти в Visual Studio и приступить к созданию проекта Blazor для которого мы будем писать инсталлятор.

Создадим проект Blazor Wasm и опубликуем его

File -> New Project -> Blazor WebAssambly App. Назовем проект BlazorAppForInstaller.

На следующем шаге обязательно поставьте галочку ASP.NET Core hosted и выберите .Net 6.0.

После того как проект был создан опубликуем его:

Щелкнуть правой кнопкой мыши по BlazorAppForInstaller.Server -> Publish -> Target: Folder -> Finish.

Проект должен быть опубликован в указанную вами папку (в моем случае, это ~BlazorAppForInstallerServerbinReleasenet6.0publish): содержимое этой директории мы и будем упаковывать в инсталлятор.

Создадим проект Wix InstallerForBlazorApp

Щелкнуть правой кнопкой мыши по названию решения Add -> New project

В поиске вбиваем Wix

В результатах поиска выбираем Setup Project for Wix v3 и нажимаем Next

В поле Project name вводим названием. В моем случае это InstallerForBlazorApp. Щелкаем по кнопке Create.

Настройка проекта

Для сборки инсталлятора необходимо описать компоненты (то есть файлы установки).

Если бы мы имели дело с простым проектом, состоящим из десятка файла, то вполне допустимо их описать вручную. Однако, когда речь заходит о суровой интерпрайз разработке или просто о больших проектах, включающих кучу файлов (особенно это касается веба) довольно сложно (а зачастую невозможно) становится следить за добавлением или удалением файлов. Именно поэтому, мы воспользуемся консольной утилитой Harvest Tool (heat.exe), который можно найти в директории ~/WiX Toolset v3.11bin (по умолчанию, должна быть создана при установке в C:/Program Files (x86)). Подробно ознакомиться с возможностями Heat.exe можно в официальной документации https://wixtoolset.org/documentation/manual/v3/overview/heat.html

Я предлагаю сделать запуск heat.exe частью сборки проекта, чтобы сэкономить силы в процессе разработки – благо проекты Wix позволяют интегрировать генерацию описания непосредственно в файл проекта .wixproj.

Щелкаем правой кнопкой мыши по проекту инсталлятора -> Add Reference — открываем папку, в которую был установлен WiX, подкаталог bin, файл WixUtilExtension.dll

С использованием любого текстового редактора откройте файл InstallerForBlazorApp.wixproj и вставьте следующий кусок кода перед закрывающимся тегом </Project>

<Target Name="BeforeBuild">
    <PropertyGroup>
      <DefineConstants>
        BasePath=....BlazorAppForInstallerBlazorAppForInstallerServerbinReleasenet6.0publish;
      </DefineConstants>
    </PropertyGroup>
    <!--This code generates the ComponentsGeneration.wxs 
    which describes the components to include into the installer.-->
    <HeatDirectory 
    OutputFile="ComponentsGenerated.wxs" 
    DirectoryRefId="INSTALLFOLDER" 
    ComponentGroupName="PublishedComponents" 
    SuppressCom="true" 
    Directory="....BlazorAppForInstallerBlazorAppForInstallerServerbinReleasenet6.0publ ish" 
    SuppressFragments="true" 
    SuppressRegistry="true" 
    SuppressRootDirectory="true" 
    AutoGenerateGuids="false" 
    GenerateGuidsNow="true" 
    ToolPath="$(WixToolPath)" 
    PreprocessorVariable="var.BasePath" 
    RunAsSeparateProcess="$(RunWixToolsOutOfProc)" />
</Target>

Как вы видите, код помещен внутрь тега <Target Name=”BeforeBuild”> описывающий действия, которые должны быть выполнены непосредственно перед сборкой инсталлятора. К таким действиям относится объявление констант препроцессора, к которым можно будет обращаться до этапа сборки проекта. Так, переменная (да, это константа, но нейминг Wix периодически противоречит самому себе) BasePath используется для обозначения пути проекта, который будет упакован в инсталлятор. Настоятельно рекомендую использовать относительные пути настолько насколько это возможно.

Далее, с помощью тега <Heat> и его свойств мы вызываем утилиту Heat.exe и передаем ей необходимые аргументы:

  • OutputFile="ComponentsGenerated.wxs" – путь до файла, в котором хранятся компоненты для установки

  • DirectoryRefId="INSTALLFOLDER" – ссылка на папку в которую будет произведена установка приложения (по сути это переменная в которую будет записан путь до директории установки)

  • ComponentGroupName="PublishedComponents" – наименование группы компонентов, которые были сгенерированы. Используется как алиас для множества компонентов и является абстракцией, существующей исключительно в рамках проект Wix. Когда инсталлятор будет скомпилирован, то в таблицах .msi файла вы не найдете сущности соответствующей группе компонентов

  • AutoGenerateGuids="false" и GenerateGuidsNow="true" – настройка генерирации GUID для компонентов в момент вызова утилиты Heat. Такая конфигурация заставляет Heat создать для каждого компонента уникальный GUID в момент запуска таски, т.е. на этапе сборки проекта. Такой подход минимизирует количество ошибок, возникающих при компиляции проекта Wix.

  • ToolPath="$(WixToolPath)" – путь до директории с установленным Wix Toolset. Рекомендую использовать переменную окружения WixToolPath, которая создается при установке Wix. По большому счету, прописывать вручную путь придется только в том случае, если вы планируете использовать Wix toolset без установки через стандартный инсталлятор.

  • PreprocessorVariable="var.BasePath" – переменная препроцессора, которая используется в качестве части пути (указывает на директорию) до файла-компонента. Мы ее объявили внутри тега <DefineConstants>

  • RunAsSeparateProcess="$(RunWixToolsOutOfProc)"– обязательно указывайте этот атрибут, если работаете в Visual Studio 2022 и собираете 64-битный проект. В противном случае Visual Studio будет закрываться при каждой попытке построить проект. Эту проблему обсуждали здесь

  • SuppressRootDirectory="true" – необходим для избежания дублирования родительских папок компонента.

  • SuppressCom="true", SuppressFragments="true" и SuppressRegistry="true" – несмотря на то, что очень не велика вероятность, что в вашем проекте окажутся COM объекты, файлы реестров и фрагменты установщика лежащие в одной папке с основным проектом, рекомендуется дополнительно запретить включать такие файлы в процесс создания описания компонентов из-за высокой вероятности возникновения ошибок. Если же, у вас есть необходимость включения таких файлов в проект инсталлятора, рекомендуется добавить отдельное описание таких компонентов.

После внесенных изменений InstallerForBlazorApp.wixproj должен выглядеть так

<?xml version="1.0" encoding="utf-8"?>
<Project ToolsVersion="4.0" DefaultTargets="Build" InitialTargets="EnsureWixToolsetInstalled" xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
  <PropertyGroup>
    <Configuration Condition=" '$(Configuration)' == '' ">Debug</Configuration>
    <Platform Condition=" '$(Platform)' == '' ">x64</Platform>
    <ProductVersion>3.10</ProductVersion>
    <ProjectGuid>6f99cf2a-a8d3-4f08-a4e1-cd86ea9c9785</ProjectGuid>
    <SchemaVersion>2.0</SchemaVersion>
    <OutputName>InstallerForBlazorApp</OutputName>
    <OutputType>Package</OutputType>
  </PropertyGroup>
  <PropertyGroup Condition=" '$(Configuration)|$(Platform)' == 'Debug|x86' ">
    <OutputPath>bin$(Configuration)</OutputPath>
    <IntermediateOutputPath>obj$(Configuration)</IntermediateOutputPath>
    <DefineConstants>Debug</DefineConstants>
  </PropertyGroup>
  <PropertyGroup Condition=" '$(Configuration)|$(Platform)' == 'Release|x86' ">
    <OutputPath>bin$(Configuration)</OutputPath>
    <IntermediateOutputPath>obj$(Configuration)</IntermediateOutputPath>
  </PropertyGroup>
  <ItemGroup>
    <Compile Include="ComponentsGenerated.wxs" />
    <Compile Include="IISConfiguration.wxs" />
    <Compile Include="Product.wxs" />
  </ItemGroup>
  <ItemGroup>
    <WixExtension Include="WixUtilExtension">
      <HintPath>$(WixExtDir)WixUtilExtension.dll</HintPath>
      <Name>WixUtilExtension</Name>
    </WixExtension>
    <WixExtension Include="WixUIExtension">
      <HintPath>$(WixExtDir)WixUIExtension.dll</HintPath>
      <Name>WixUIExtension</Name>
    </WixExtension>
    <WixExtension Include="WixIIsExtension">
      <HintPath>$(WixExtDir)WixIIsExtension.dll</HintPath>
      <Name>WixIIsExtension</Name>
    </WixExtension>
  </ItemGroup>
  <Import Project="$(WixTargetsPath)" Condition=" '$(WixTargetsPath)' != '' " />
  <Import Project="$(MSBuildExtensionsPath32)MicrosoftWiXv3.xWix.targets" Condition=" '$(WixTargetsPath)' == '' AND Exists('$(MSBuildExtensionsPath32)MicrosoftWiXv3.xWix.targets') " />
  <Target Name="EnsureWixToolsetInstalled" Condition=" '$(WixTargetsImported)' != 'true' ">
    <Error Text="The WiX Toolset v3.11 (or newer) build tools must be installed to build this project. To download the WiX Toolset, see http://wixtoolset.org/releases/" />
  </Target>
  <Target Name="BeforeBuild">
    <PropertyGroup>
      <DefineConstants>
        BasePath=....BlazorAppForInstallerBlazorAppForInstallerServerbinReleasenet6.0publish;
      </DefineConstants>
    </PropertyGroup>
    <!--This code generates the ComponentsGeneration.wxs 
    which describes the components to include into the installer.-->
    <HeatDirectory OutputFile="ComponentsGenerated.wxs" DirectoryRefId="INSTALLFOLDER" ComponentGroupName="PublishedComponents" SuppressCom="true" Directory="....BlazorAppForInstallerBlazorAppForInstallerServerbinReleasenet6.0publish" SuppressFragments="true" SuppressRegistry="true" SuppressRootDirectory="true" AutoGenerateGuids="false" GenerateGuidsNow="true" ToolPath="$(WixToolPath)" PreprocessorVariable="var.BasePath" RunAsSeparateProcess="$(RunWixToolsOutOfProc)" />
  </Target>
</Project>

После того, как вы внесете указанные изменения в файл .wixproj сохраните изменения и постройте проект. В результате, в корневой папке проекта инсталлятора должен появиться файл ComponentsGenerated.wxs.

В моем случае ComponentGenerated.wxs имеет следующее содержание

<?xml version="1.0" encoding="utf-8"?>
<Wix xmlns="http://schemas.microsoft.com/wix/2006/wi">
    <Fragment>
        <DirectoryRef Id="INSTALLFOLDER">
            <Component Id="cmpA0863526952F7834E7C922F065E4C8A8" Guid="{4F47DA2F-E8FD-4B92-AE61-FFE9CA68BF7F}">
                <File Id="filC04B02D0CCC2D5CCC1013B35DE86DB29" KeyPath="yes" Source="$(var.BasePath)appsettings.Development.json" />
            </Component>
            <Component Id="cmpF82FCA80BBAF44D285C97F10993DEEE6" Guid="{EE55FE38-515B-444C-9496-6BA0FE9F8550}">
                <File Id="fil840B80AC19861C7F9F04FBDCFAE331CE" KeyPath="yes" Source="$(var.BasePath)appsettings.json" />
            </Component>
            <Component Id="cmp80A32365AE3ACFE27BDD385AE91DCE74" Guid="{2234C1AC-AB8D-460E-BBF1-F982BBE28426}">
                <File Id="filA65D0C2EEDE361CBA6DAA5414A5885D6" KeyPath="yes" Source="$(var.BasePath)BlazorAppForInstaller.Client.dll" />
            </Component>
            <Component Id="cmpF69BDBE9F42451436A0B8C022F6D4636" Guid="{291B8DF2-FC5A-4C41-94A8-2100BC13DA52}">
                <File Id="filEF7A1D8322B02801B5E1FF05C1E9C211" KeyPath="yes" Source="$(var.BasePath)BlazorAppForInstaller.Client.pdb" />
            </Component>
            <Component Id="cmpFD59DF07063AC308C40670A4B81A9B57" Guid="{73AF0D36-0704-4458-933B-F8A412BEAF16}">
                <File Id="filEC516099676B2B686B154C6BDD632062" KeyPath="yes" Source="$(var.BasePath)BlazorAppForInstaller.Server.deps.json" />
            </Component>
            <Component Id="cmpECDF00A9B659260C50885BEEADBCABC0" Guid="{3F5F5E68-208A-4A84-85EC-4C8F3F003760}">
                <File Id="filB052CB4639CA4C158F4D9FE686DB740A" KeyPath="yes" Source="$(var.BasePath)BlazorAppForInstaller.Server.dll" />
            </Component>
            <Component Id="cmpE351BCDC42EF493685CEF4080E08E51E" Guid="{84BD7DDE-6020-40F9-986B-983174E660F6}">
                <File Id="fil04C3A476D538A356A55E0061D96C252E" KeyPath="yes" Source="$(var.BasePath)BlazorAppForInstaller.Server.exe" />
            </Component>
            <Component Id="cmp651C3999A00B5D89ACAE2D3A9BE7F91D" Guid="{C497D355-3BD7-45B6-AF99-71F10F687F19}">
                <File Id="fil5845A2249FFDBB31724899C28857297E" KeyPath="yes" Source="$(var.BasePath)BlazorAppForInstaller.Server.pdb" />
            </Component>
            <Component Id="cmpBCBFD41B8B964007BA9BF340925C6493" Guid="{0AB26848-8B77-49A8-AB82-F6F490C9EB3A}">
                <File Id="fil7883E94C175B382DAE68D2E730B7F18F" KeyPath="yes" Source="$(var.BasePath)BlazorAppForInstaller.Server.runtimeconfig.json" />
            </Component>
            <Component Id="cmp9A7CD58BE639399F7BDAA987492B6E65" Guid="{840E5F4F-940A-42F4-ABAB-756DA9EEA9A7}">
                <File Id="filC2AF92E94531E79C884299478E78AB02" KeyPath="yes" Source="$(var.BasePath)BlazorAppForInstaller.Shared.dll" />
            </Component>
            <Component Id="cmpB818026BC106A80C4FD6E90BF8F06CDA" Guid="{6B873FB2-A32E-4AAD-8072-5B6A9B5671D7}">
                <File Id="fil6E77B3E6819A87A3819FFDB52DC2AB74" KeyPath="yes" Source="$(var.BasePath)BlazorAppForInstaller.Shared.pdb" />
            </Component>
            <Component Id="cmp2F0A313AE6306F9CE5E760AF214DC789" Guid="{9BCD7498-EBD2-460F-A033-6BD934E21DDB}">
                <File Id="fil274A60BD8B17A2DA6C1EB35AEA850F12" KeyPath="yes" Source="$(var.BasePath)Microsoft.AspNetCore.Authorization.dll" />
            </Component>
            <Component Id="cmp6D6CC90C40E2F632C9128346BA7F188F" Guid="{F0EBBBD6-25A4-4A14-A6A9-3B09FCF616B7}">
                <File Id="filB3A561B406C5673062D93CEAB4C5FBA3" KeyPath="yes" Source="$(var.BasePath)Microsoft.AspNetCore.Components.dll" />
            </Component>
            <Component Id="cmpA76C6CFFA9DCB201D0EEDB226B0B9E25" Guid="{EE7A5E70-7B9D-4E30-98B8-B39E077D585D}">
                <File Id="fil509B74670E6E3BBFDDC3F98EFB8E8C1D" KeyPath="yes" Source="$(var.BasePath)Microsoft.AspNetCore.Components.Forms.dll" />
            </Component>
            <Component Id="cmp17959BADF0C2D7B7AB4867F09DA031B8" Guid="{6A5C8273-F71E-43FC-8896-84DD02259470}">
                <File Id="filBCB8CB727FBD0C042A3E896A50A0013A" KeyPath="yes" Source="$(var.BasePath)Microsoft.AspNetCore.Components.Web.dll" />
            </Component>
            <Component Id="cmpDF4C205418A6D7FE6FEA71F3B8998FAC" Guid="{8AB6FEF4-5925-4C12-B9F4-2A82C8430CDF}">
                <File Id="filC4C0674046FF1CB3C507EAB882BF2E34" KeyPath="yes" Source="$(var.BasePath)Microsoft.AspNetCore.Components.WebAssembly.dll" />
            </Component>
            <Component Id="cmpDA8B0BBD16E996DE615D6861DBA6442F" Guid="{B1A2B290-F7A5-4BEA-98D6-FA1540E5AF7B}">
                <File Id="fil05438E5B6FC074FE194163CB964F6591" KeyPath="yes" Source="$(var.BasePath)Microsoft.AspNetCore.Components.WebAssembly.Server.dll" />
            </Component>
            <Component Id="cmp3D2A78302A6149F7464B0EDCD758BCCF" Guid="{D621ED15-E9E3-4BCE-A1F2-226AAF54F6D6}">
                <File Id="fil448E35B6B4567F45DB8A9C0D588396AC" KeyPath="yes" Source="$(var.BasePath)Microsoft.AspNetCore.Metadata.dll" />
            </Component>
            <Component Id="cmp8C674FD6A69988A60A77A4CEE0F53781" Guid="{F9FCFE30-E9F4-4434-A516-D49A5955838C}">
                <File Id="fil72342637E9F74EE945317D4603CEBA2F" KeyPath="yes" Source="$(var.BasePath)Microsoft.Extensions.Logging.Abstractions.dll" />
            </Component>
            <Component Id="cmpDB4717CBBFD23A9652DB5B136ABB5D75" Guid="{BF3D8181-57C3-4615-A65A-A356F9749FF0}">
                <File Id="filD208251EAF74D3D9FCA9A0D020CF9631" KeyPath="yes" Source="$(var.BasePath)Microsoft.JSInterop.dll" />
            </Component>
            <Component Id="cmpCF0F711637230B4D1AE41109C02C9142" Guid="{334AADF3-2C4A-43A3-AA3E-C3063F65C57E}">
                <File Id="fil5E6F1BBD1CE0D66ADA7274CC42146536" KeyPath="yes" Source="$(var.BasePath)Microsoft.JSInterop.WebAssembly.dll" />
            </Component>
            <Component Id="cmpF88B96E5973E0D28B511DC6371DB06E0" Guid="{0DAA8109-C0F5-47A0-8DC9-FCAAEB8CCC90}">
                <File Id="filA72770FDC08B6447ABAA326398A3C786" KeyPath="yes" Source="$(var.BasePath)System.IO.Pipelines.dll" />
            </Component>
            <Component Id="cmpB139B49DF4DF8F44C525B449EA8187F7" Guid="{DAD0B80D-AD5E-454B-82EF-1BC3456FB55A}">
                <File Id="filE7A3E65CC622C2E3B9B57707B12C9645" KeyPath="yes" Source="$(var.BasePath)web.config" />
            </Component>
            <Directory Id="dirFF7B98771B91AAE585FE52B7EFB34AF9" Name="BlazorDebugProxy">
                <Component Id="cmp5B65C45828B950384B8C5C76AB9F6EF0" Guid="{6242E71D-EA64-4F79-A3AA-C661D442FD18}">
                    <File Id="fil0EF0F550322CD17C7C714E44E83269EA" KeyPath="yes" Source="$(var.BasePath)BlazorDebugProxyBrowserDebugHost.dll" />
                </Component>
                <Component Id="cmp5A9228A102598245A49CC73E4B42BFFD" Guid="{F6BA6C92-A950-4E24-8C85-448E2CA02DBE}">
                    <File Id="filD8595B9CBE5DD5D704F01D48491D318A" KeyPath="yes" Source="$(var.BasePath)BlazorDebugProxyBrowserDebugHost.runtimeconfig.json" />
                </Component>
                <Component Id="cmp0B11C97F8D96134C5A582DAA9D362721" Guid="{CB376EF4-2F26-4D88-A4FA-C8BF3B2C8D1D}">
                    <File Id="fil4E80FEBEAB64C6B7394572A11AEE0A1A" KeyPath="yes" Source="$(var.BasePath)BlazorDebugProxyBrowserDebugProxy.dll" />
                </Component>
                <Component Id="cmp22B9B089D6F03FEB02531ECB35C82F8E" Guid="{374B5BC6-6408-49D3-8127-8B5B104DA628}">
                    <File Id="fil6055CEB7DE0EF0D0757B75192036CECF" KeyPath="yes" Source="$(var.BasePath)BlazorDebugProxyMicrosoft.CodeAnalysis.CSharp.dll" />
                </Component>
                <Component Id="cmp958171B03EC06C56FB11A52D468E5F57" Guid="{CCD5CB55-0760-46EE-9593-7479EE86EDF2}">
                    <File Id="filBE547A9559A6D9185621EABC8B529677" KeyPath="yes" Source="$(var.BasePath)BlazorDebugProxyMicrosoft.CodeAnalysis.dll" />
                </Component>
                <Component Id="cmpB322B77CE8D40EBAD199D45D0E4F25F0" Guid="{D6CBA61F-4366-482A-B4CA-17E1A68792AD}">
                    <File Id="fil28DEDB3F6C20AB880B95B684491580B0" KeyPath="yes" Source="$(var.BasePath)BlazorDebugProxyNewtonsoft.Json.dll" />
                </Component>
            </Directory>
            <Directory Id="dir3D83A529A2122889D4016E7D784625D5" Name="wwwroot">
                <Component Id="cmp920020A0D51F9A626EB2143066649049" Guid="{65310CAD-54CE-4F8D-B0BD-0C8FFA12A329}">
                    <File Id="fil5625CD1F0A436AA0C9E8667328891D3A" KeyPath="yes" Source="$(var.BasePath)wwwrootBlazorAppForInstaller.Client.styles.css" />
                </Component>
                <Component Id="cmp6A573805E6F545A7F37C18527646950E" Guid="{67E7C809-BA29-46FC-8ABD-30692E02416D}">
                    <File Id="fil4340641EF92B44F5306114E3F1D36462" KeyPath="yes" Source="$(var.BasePath)wwwrootfavicon.ico" />
                </Component>
                <Component Id="cmp0D2F1CB83AD7A688791EFF1B2407B5F1" Guid="{5C4C24DA-9BBB-4450-A57B-A5B764EF18C9}">
                    <File Id="filF5852E3A1C173CD4B7AA5BB8D1B19C16" KeyPath="yes" Source="$(var.BasePath)wwwrooticon-192.png" />
                </Component>
                <Component Id="cmp8D45D052C68877B0B807B3D45E104FF6" Guid="{6B02277E-69C6-4C6E-B7E0-6F03E23B7467}">
                    <File Id="fil658EB15BA5D7E0782137791A613E6C55" KeyPath="yes" Source="$(var.BasePath)wwwrooticon-512.png" />
                </Component>
                <Component Id="cmpD91242D38C41E4403B7679B93F1EEBB4" Guid="{1F0FB915-48FF-46AA-9594-8D5A8D143EA6}">
                    <File Id="filA9C65401D86C7CFD07B966A29B9D89E3" KeyPath="yes" Source="$(var.BasePath)wwwrootindex.html" />
                </Component>
                <Component Id="cmpCB80CFC92D7C1BB2787B948E67B42B03" Guid="{ACD6D7A5-4812-4E23-B943-8D2D391B1CBE}">
                    <File Id="fil580253134E9F2BB1D7BA130533DE8F04" KeyPath="yes" Source="$(var.BasePath)wwwrootmanifest.json" />
                </Component>
                <Component Id="cmpBCCB7ADB11BD8E995C2D17B5FDFD7CA8" Guid="{FEA4589A-C26E-4A79-BF72-FA2F9E890FAA}">
                    <File Id="filD26912E52648D14E5D4A954D5F256FA5" KeyPath="yes" Source="$(var.BasePath)wwwrootservice-worker-assets.js" />
                </Component>
                <Component Id="cmp6300BF95DDDCF98EC047B2991C2BA653" Guid="{D22568BE-81DB-4AB3-902A-B996812E427A}">
                    <File Id="fil54651357683F72D9500F5998771EB4DD" KeyPath="yes" Source="$(var.BasePath)wwwrootservice-worker.js" />
                </Component>
                <Directory Id="dirED733C34DE106D43E47F9049837C7E99" Name="css">
                    <Component Id="cmp087AEDA3ECF7BE8C1137AADA0E56E0A6" Guid="{E1B47808-2714-4CD6-9862-8D6ECC4BC085}">
                        <File Id="filD9477D05D41C78519460D2E399A53D86" KeyPath="yes" Source="$(var.BasePath)wwwrootcssapp.css" />
                    </Component>
                    <Directory Id="dir578587A376B13655DF93D8D190D09E38" Name="bootstrap">
                        <Component Id="cmpEBA035EA7685839B21FA1B833C2D781C" Guid="{BD4B431E-4265-459E-85E2-B1FB800041F3}">
                            <File Id="fil9246F4C21320DCC254AAEC2B6CA201E8" KeyPath="yes" Source="$(var.BasePath)wwwrootcssbootstrapbootstrap.min.css" />
                        </Component>
                        <Component Id="cmp87BF3E7D495DC9B53F7ED2A371F1FE92" Guid="{42C20875-5B4E-4020-B569-6F162FF7502E}">
                            <File Id="fil706E0FE7B70A4FE22131C3ECDCC2220D" KeyPath="yes" Source="$(var.BasePath)wwwrootcssbootstrapbootstrap.min.css.map" />
                        </Component>
                    </Directory>
                    <Directory Id="dir4AA45E3B956024607D9673C62D4A5EC7" Name="open-iconic">
                        <Component Id="cmp2220CCF66448F1A862D1353191CE69F5" Guid="{F39CDA89-87A8-4358-9C64-A31535B9FD00}">
                            <File Id="fil69CA8DBC716DB349E38835E0E4376776" KeyPath="yes" Source="$(var.BasePath)wwwrootcssopen-iconicFONT-LICENSE" />
                        </Component>
                        <Component Id="cmp791F5746D6F2AC68E2E8A50343B869F7" Guid="{177623EB-7AC3-499E-9AFE-A801224F322D}">
                            <File Id="filAA56F33B7267915E17B9C07E35B9B3B1" KeyPath="yes" Source="$(var.BasePath)wwwrootcssopen-iconicICON-LICENSE" />
                        </Component>
                        <Component Id="cmp3DA139ADE5BC562B564DECE23AFFD8D0" Guid="{18E7BE1D-0F79-49F7-882A-B33029F7D041}">
                            <File Id="fil0A55830EEB5C8115A1BC74E41C184141" KeyPath="yes" Source="$(var.BasePath)wwwrootcssopen-iconicREADME.md" />
                        </Component>
                        <Directory Id="dir71E214D0555C176F3B3EB73000355FD6" Name="font">
                            <Directory Id="dirD56BE8D7B4920E710730E8C5A7AA202D" Name="css">
                                <Component Id="cmp3F52B8D89D587889C8A65D69E74B5F51" Guid="{E1FA7A7E-636C-4A1F-B198-15C7DB660AB8}">
                                    <File Id="fil94C1662E6A729DBD5920B971BE85A743" KeyPath="yes" Source="$(var.BasePath)wwwrootcssopen-iconicfontcssopen-iconic-bootstrap.min.css" />
                                </Component>
                            </Directory>
                            <Directory Id="dirE412B34DB4EE4DFCC5824E0F7C902C7E" Name="fonts">
                                <Component Id="cmp102AA2B65E2F7CFDBE0F937F8D225168" Guid="{61583E56-78F9-4899-B414-16CF55BA7613}">
                                    <File Id="fil164917E73009BFF1140888BA7311A83E" KeyPath="yes" Source="$(var.BasePath)wwwrootcssopen-iconicfontfontsopen-iconic.eot" />
                                </Component>
                                <Component Id="cmp022B66C05DEF11B72F5542F7A563B670" Guid="{13CE3EBF-5709-4E53-A16E-AD8D594269B6}">
                                    <File Id="fil359A08138CF8104E01BEDDFBCF601539" KeyPath="yes" Source="$(var.BasePath)wwwrootcssopen-iconicfontfontsopen-iconic.otf" />
                                </Component>
                                <Component Id="cmp0F72C70E7993CC0B3E9FF70ED40066D9" Guid="{50A1B8A9-FC5F-4DBF-A5B9-23BF36B86461}">
                                    <File Id="fil58F851EE53BB2984EF8AD39C75D6ED2B" KeyPath="yes" Source="$(var.BasePath)wwwrootcssopen-iconicfontfontsopen-iconic.svg" />
                                </Component>
                                <Component Id="cmpFA0036474721DE0D4163E05499F39951" Guid="{48316E0E-AFCD-42C8-81DB-2BFA5B78098D}">
                                    <File Id="filE8C22BD61F80DDEF89A090F2D3088910" KeyPath="yes" Source="$(var.BasePath)wwwrootcssopen-iconicfontfontsopen-iconic.ttf" />
                                </Component>
                                <Component Id="cmpB5AF9E63913432C07629EC20330320A3" Guid="{AA08AEF0-1074-4798-A594-3D2336A888D0}">
                                    <File Id="fil6C6239428714D4469CE9DC4AC970572B" KeyPath="yes" Source="$(var.BasePath)wwwrootcssopen-iconicfontfontsopen-iconic.woff" />
                                </Component>
                            </Directory>
                        </Directory>
                    </Directory>
                </Directory>
                <Directory Id="dir2456A1A1C6D6186A96473C7CCDFCB992" Name="_framework">
                    <Component Id="cmp9D66267AB1CAF7A98DFC42947DC635D4" Guid="{5001E34B-2EE7-405B-AB2E-3796E0A80C0F}">
                        <File Id="filB44D114325A011114C21CBE4A300CB0A" KeyPath="yes" Source="$(var.BasePath)wwwroot_frameworkblazor.boot.json" />
                    </Component>
                    <Component Id="cmpCD4F94EB73F3962B42308170454B4366" Guid="{94C7954D-AE32-4F74-B486-EDED35A5DCD9}">
                        <File Id="fil95D8DA1D1C8714B25ACFD17A854A6556" KeyPath="yes" Source="$(var.BasePath)wwwroot_frameworkblazor.boot.json.br" />
                    </Component>
                    <Component Id="cmp6D7DA841FD268735AFB1026BA6AE24A3" Guid="{2693A4A8-6008-41AD-A7F7-1BA66EBF6C79}">
                        <File Id="filE6753DF182773CBE5CB34EFF14F104A1" KeyPath="yes" Source="$(var.BasePath)wwwroot_frameworkblazor.boot.json.gz" />
                    </Component>
                    <Component Id="cmp08111D788677D8B8150650EE58FB5962" Guid="{CEDA9984-84D1-451F-ABDE-626A8C59F7C5}">
                        <File Id="fil91C23D13B8DAFF05EBEB8392CE68B52A" KeyPath="yes" Source="$(var.BasePath)wwwroot_frameworkblazor.webassembly.js" />
                    </Component>
                    <Component Id="cmp5A46DA40AED3B5E10AF9751BA0029C2C" Guid="{2D3F6029-21F3-4303-87BF-57533CA6DD32}">
                        <File Id="fil8B39D85752BD54316DA226C75F3327CD" KeyPath="yes" Source="$(var.BasePath)wwwroot_frameworkblazor.webassembly.js.br" />
                    </Component>
                    <Component Id="cmp6A6C2351815759B4DB8982A7741D0ABA" Guid="{9DFD3F7F-C3B3-467F-B20A-BC93AB02E79F}">
                        <File Id="fil19B6F698DFFF12083A98F5D787FD0C27" KeyPath="yes" Source="$(var.BasePath)wwwroot_frameworkblazor.webassembly.js.gz" />
                    </Component>
                    <Component Id="cmp82623C6CA3D1FE2B38C69748720D46CB" Guid="{F1498C70-7946-48C6-B0B5-D0D9AAE667F9}">
                        <File Id="fil08BC13C8E449CA8F8A63459958299CC2" KeyPath="yes" Source="$(var.BasePath)wwwroot_frameworkBlazorAppForInstaller.Client.dll" />
                    </Component>
                    <Component Id="cmp2EAADFED8A771ED40D36F4261011FC42" Guid="{CBB22CE6-A9AB-4AAA-8C7A-8DF7E75097C5}">
                        <File Id="fil8BFAA357E90079ABABE1BCF4BA473A95" KeyPath="yes" Source="$(var.BasePath)wwwroot_frameworkBlazorAppForInstaller.Client.dll.br" />
                    </Component>
                    <Component Id="cmp0C35E5441CB1AEE868B0841FC2B3727D" Guid="{88347808-0D45-4D45-8481-38208053A58F}">
                        <File Id="filA93D1C70A69655AA4C51B3783DEF7929" KeyPath="yes" Source="$(var.BasePath)wwwroot_frameworkBlazorAppForInstaller.Client.dll.gz" />
                    </Component>
                    <Component Id="cmpF7B971FD5EDDB748109439252E62DBB2" Guid="{27F9F764-1382-4933-9E5A-5DD08B7D16C0}">
                        <File Id="filEBF0235031F25983E7C1A9288636FA06" KeyPath="yes" Source="$(var.BasePath)wwwroot_frameworkBlazorAppForInstaller.Client.pdb.gz" />
                    </Component>
                    <Component Id="cmp1A38450971536177F12598D9DA69460B" Guid="{A75C8817-B1F6-4DA9-9900-B40F240C5DC1}">
                        <File Id="filBB8B83E5A719B33BDFBE76BD743CCF89" KeyPath="yes" Source="$(var.BasePath)wwwroot_frameworkBlazorAppForInstaller.Shared.dll" />
                    </Component>
                    <Component Id="cmpB3C98B1AF19712A5A4C90299621D5AA3" Guid="{96975A6F-A077-4100-B12E-1DD3399CCB5A}">
                        <File Id="filEB014231B74E00067909368905F30EE7" KeyPath="yes" Source="$(var.BasePath)wwwroot_frameworkBlazorAppForInstaller.Shared.dll.br" />
                    </Component>
                    <Component Id="cmpB532E6FD17B9FD1DDEF930DAB1CDCC8C" Guid="{C682083C-EBDE-4A5F-B609-AAED3ADD024F}">
                        <File Id="fil5E81E1CB0A6DE77CBC8370A61E06C38B" KeyPath="yes" Source="$(var.BasePath)wwwroot_frameworkBlazorAppForInstaller.Shared.dll.gz" />
                    </Component>
                    <Component Id="cmp930FCEACB08C3F828E26B2B4AAAD3B58" Guid="{F87DB6C4-DE5E-4274-8DC5-E93C92AE35BB}">
                        <File Id="filF270CDA0AFA589A3714231A594BCD5FB" KeyPath="yes" Source="$(var.BasePath)wwwroot_frameworkBlazorAppForInstaller.Shared.pdb.gz" />
                    </Component>
                    <Component Id="cmp94D35364CD546AECFF1FD3E16E7705BC" Guid="{2E38C9A8-06D4-4A9E-A090-C47083799C8B}">
                        <File Id="fil0170682B3A5D149D65261C93955427C3" KeyPath="yes" Source="$(var.BasePath)wwwroot_frameworkdotnet.6.0.4.33aaebng0v.js" />
                    </Component>
                    <Component Id="cmpEEB478F290FD8E012F256864DA59B87A" Guid="{9D6ADBA3-2C2B-40A3-AD1C-A622C796B35B}">
                        <File Id="fil4BFFAB0897DDFF6616372F10D397F4C5" KeyPath="yes" Source="$(var.BasePath)wwwroot_frameworkdotnet.6.0.4.33aaebng0v.js.br" />
                    </Component>
                    <Component Id="cmpABBCFC94814B14153BE6A9A7989C2A0A" Guid="{921EBFCE-279F-4146-A223-6AC7A86B82B3}">
                        <File Id="filC837371EBEBB4A85095F62968F246518" KeyPath="yes" Source="$(var.BasePath)wwwroot_frameworkdotnet.6.0.4.33aaebng0v.js.gz" />
                    </Component>
                    <Component Id="cmpF242BF7465335E363684D1995205E1BD" Guid="{7238E4CE-E418-4603-AB1F-2C5064257911}">
                        <File Id="fil100971A9827D4A995FD58C69132C7F78" KeyPath="yes" Source="$(var.BasePath)wwwroot_frameworkdotnet.timezones.blat" />
                    </Component>
                    <Component Id="cmp02E6C2F0AD10D0478D86BE37452B0914" Guid="{256ED6AB-05AB-4201-9B25-CC374E7AC3E2}">
                        <File Id="fil349A7A48CB5B0B3B0DBE9F8FDB0E73A3" KeyPath="yes" Source="$(var.BasePath)wwwroot_frameworkdotnet.timezones.blat.br" />
                    </Component>
                    <Component Id="cmp4A0D7430E5062327165BBC0627BB2583" Guid="{979FCAC9-D8EE-44AB-9B0C-850E5D1BEBAF}">
                        <File Id="fil0886807D84E5ADBFAE7CA9BEC8FFA851" KeyPath="yes" Source="$(var.BasePath)wwwroot_frameworkdotnet.timezones.blat.gz" />
                    </Component>
                    <Component Id="cmp39219EB53A18F9EF8C1D9E629B44B00E" Guid="{22B4717D-5557-4F1B-971F-23FE4E288EA6}">
                        <File Id="fil68C7BC2EE4C13DECCA9E6FB9D7C824A9" KeyPath="yes" Source="$(var.BasePath)wwwroot_frameworkdotnet.wasm" />
                    </Component>
                    <Component Id="cmpA1E64C6DD02D1B8D3365CDF712DE7740" Guid="{B626E6DB-2D54-4452-A1A4-6F3E26C040CB}">
                        <File Id="fil2A596AD93D719FC8D9587E4071ADD444" KeyPath="yes" Source="$(var.BasePath)wwwroot_frameworkdotnet.wasm.br" />
                    </Component>
                    <Component Id="cmp2F00835F6AB457CB0746B0CF23BBABC4" Guid="{B58C9A4C-87F2-4854-AAC7-6D2872E24C9E}">
                        <File Id="fil9EFAF48DDA876292454A09D0ABB854E5" KeyPath="yes" Source="$(var.BasePath)wwwroot_frameworkdotnet.wasm.gz" />
                    </Component>
                    <Component Id="cmp728A6879EC0D4538CF0D9A610CDB29AB" Guid="{73825831-1C6F-4309-BD38-DA71EB9D08C7}">
                        <File Id="filA6E451B0F223EACAE5E0D5C4634C5F3D" KeyPath="yes" Source="$(var.BasePath)wwwroot_frameworkicudt.dat" />
                    </Component>
                    <Component Id="cmpCF6F10CA4A3650B98898E76461DBDB47" Guid="{3116E39D-5666-4B49-A07C-C3DFEB00431E}">
                        <File Id="filD2CE1A50BBA0A22996BE87C71FB6B412" KeyPath="yes" Source="$(var.BasePath)wwwroot_frameworkicudt.dat.br" />
                    </Component>
                    <Component Id="cmp512FC92BCC546D0A442E2A50E378BA60" Guid="{D815DB8F-3108-4B6B-8233-C0E9DB54359D}">
                        <File Id="fil18707646D8908FCB093B7109B82D706C" KeyPath="yes" Source="$(var.BasePath)wwwroot_frameworkicudt.dat.gz" />
                    </Component>
                    <Component Id="cmpA8FCAF75866687FC4A4693E426913FBA" Guid="{EBBDA200-5E60-41F6-8A34-8237385C2BE1}">
                        <File Id="fil9BDA85D8F75E1651CAC2432153EB4836" KeyPath="yes" Source="$(var.BasePath)wwwroot_frameworkicudt_CJK.dat" />
                    </Component>
                    <Component Id="cmp747FF5C347AA12FFF91DF70F289BC1F7" Guid="{0F1FF7D6-ECFF-4321-9AD2-5B7B078BCE6D}">
                        <File Id="filCD2D30AC48BC4F5A8FE9379F4D69A5EF" KeyPath="yes" Source="$(var.BasePath)wwwroot_frameworkicudt_CJK.dat.br" />
                    </Component>
                    <Component Id="cmpDEF19AE67395660D7A04537C771DEAEA" Guid="{E02B6461-7A78-4680-8E25-5992D1ADAC3C}">
                        <File Id="fil1D562F69200614371432FB36A61CF636" KeyPath="yes" Source="$(var.BasePath)wwwroot_frameworkicudt_CJK.dat.gz" />
                    </Component>
                    <Component Id="cmp286486FA354377E5944B31BCB5E1BD86" Guid="{38D93EA2-EDE3-49FB-977A-B8AC290C63BF}">
                        <File Id="filC6F93228041B4AC1C5D2CB9DAD61425C" KeyPath="yes" Source="$(var.BasePath)wwwroot_frameworkicudt_EFIGS.dat" />
                    </Component>
                    <Component Id="cmpDA5F2E45468ACB6957DF118202F57CBA" Guid="{2877D2BE-A1D7-46B8-AE47-53D9B447FA9D}">
                        <File Id="filA7C7633C832FDE23C3A3D543BE4E0117" KeyPath="yes" Source="$(var.BasePath)wwwroot_frameworkicudt_EFIGS.dat.br" />
                    </Component>
                    <Component Id="cmp329238427D6DFA82B9DE0EC84FAA175F" Guid="{19E13614-89FD-4B1F-BC3F-4D9FB4A82391}">
                        <File Id="fil85E8885AF7B63E77FC30F33EA7464A10" KeyPath="yes" Source="$(var.BasePath)wwwroot_frameworkicudt_EFIGS.dat.gz" />
                    </Component>
                    <Component Id="cmp006F8D28BA0AFE320C8E136D5C68A581" Guid="{B03BEBED-7876-4B59-A69A-07C2B09D0F56}">
                        <File Id="fil308F3F6ED362594B77EF7CE88BCCB855" KeyPath="yes" Source="$(var.BasePath)wwwroot_frameworkicudt_no_CJK.dat" />
                    </Component>
                    <Component Id="cmp538D88FA41B7B0483DDF492891D5D684" Guid="{AE37820A-AD7E-4A3B-85B5-5C713E0F701C}">
                        <File Id="fil164352E303F8D7119412937E644F3D90" KeyPath="yes" Source="$(var.BasePath)wwwroot_frameworkicudt_no_CJK.dat.br" />
                    </Component>
                    <Component Id="cmpF9E68B4BB97E17771AA221E83025CF38" Guid="{6A00E0B1-C08D-493B-A5FF-01001D31ABC0}">
                        <File Id="fil74816C0820AAF70E089B169C5EFB8E03" KeyPath="yes" Source="$(var.BasePath)wwwroot_frameworkicudt_no_CJK.dat.gz" />
                    </Component>
                    <Component Id="cmpA38DF32DEFA15EAB22A6AF80CC0DBA93" Guid="{92746487-239F-4375-A057-E73C72E0CBB3}">
                        <File Id="fil6A69DAD1824C6F4ADEEB75886F45C215" KeyPath="yes" Source="$(var.BasePath)wwwroot_frameworkMicrosoft.AspNetCore.Components.dll" />
                    </Component>
                    <Component Id="cmp7A14C98BD98024E214134EE58D8A2A0D" Guid="{75D3F763-C971-439B-9659-73B0A2E3921A}">
                        <File Id="fil40B121415F82041273E4F86F31649747" KeyPath="yes" Source="$(var.BasePath)wwwroot_frameworkMicrosoft.AspNetCore.Components.dll.br" />
                    </Component>
                    <Component Id="cmpFB1DAD1066930B4BCF63BD47478DA044" Guid="{EA42F28D-BB0F-4C93-AC68-E7DC429407D2}">
                        <File Id="fil4C568CE1D72145CE5D718E8A0D713E94" KeyPath="yes" Source="$(var.BasePath)wwwroot_frameworkMicrosoft.AspNetCore.Components.dll.gz" />
                    </Component>
                    <Component Id="cmpD5C2C4A360A21B8188754FC87E3531E0" Guid="{6FBD58DA-054C-4E9F-B2E4-5BCBBE4A096D}">
                        <File Id="fil20852D9320634269944588FC0AB30EF4" KeyPath="yes" Source="$(var.BasePath)wwwroot_frameworkMicrosoft.AspNetCore.Components.Web.dll" />
                    </Component>
                    <Component Id="cmp971F14265094A43D81FE6F2B7D1AF6B7" Guid="{9D277B49-4260-4A16-8DC7-BB1507080255}">
                        <File Id="fil4D323C615D70E0296DE05A39ABCF2483" KeyPath="yes" Source="$(var.BasePath)wwwroot_frameworkMicrosoft.AspNetCore.Components.Web.dll.br" />
                    </Component>
                    <Component Id="cmp0326270DDC7B6B2E7294E885AF295E3A" Guid="{E678F79C-3DF4-46A4-AF1F-31479BD0735E}">
                        <File Id="fil8A47DF30080F4F85E90D8AEA0D7C68AE" KeyPath="yes" Source="$(var.BasePath)wwwroot_frameworkMicrosoft.AspNetCore.Components.Web.dll.gz" />
                    </Component>
                    <Component Id="cmp514A78E3D9A3A1B0381C2609914F3FCD" Guid="{0A8FC9D2-72EE-4D7C-A4EE-9BE0F95C367E}">
                        <File Id="fil802D2750CD020A3D5E78C40AF27FCE7E" KeyPath="yes" Source="$(var.BasePath)wwwroot_frameworkMicrosoft.AspNetCore.Components.WebAssembly.dll" />
                    </Component>
                    <Component Id="cmp3B994E9EC7D69DA30E3341DDCA1C2E35" Guid="{C6668F6E-6A32-48D5-93DF-C808FFF25500}">
                        <File Id="filFFAD2F1CF56AFA39BB66C4F6E53F5D7C" KeyPath="yes" Source="$(var.BasePath)wwwroot_frameworkMicrosoft.AspNetCore.Components.WebAssembly.dll.br" />
                    </Component>
                    <Component Id="cmp8648F3FB6E0C32E344C77586438BA083" Guid="{50B5A6DB-AABA-45D9-9A8A-F1970F04DF92}">
                        <File Id="fil658F0AC6351BC749808CDEBEDCD9E184" KeyPath="yes" Source="$(var.BasePath)wwwroot_frameworkMicrosoft.AspNetCore.Components.WebAssembly.dll.gz" />
                    </Component>
                    <Component Id="cmpA160DA65B8DFE4CF4F6754B9B315896E" Guid="{39112D1E-BF00-4F2B-BE9C-233E177B3CC6}">
                        <File Id="fil009E11A5AB23FA4EAEC7ED47EB533CDD" KeyPath="yes" Source="$(var.BasePath)wwwroot_frameworkMicrosoft.Extensions.Configuration.Abstractions.dll" />
                    </Component>
                    <Component Id="cmp4242E026351F6B91ED373820F5BA7E70" Guid="{BD35E2A6-3DE8-4E26-9FEE-9FEF1D2CE7D7}">
                        <File Id="filA06F61D6AE665C6ACBA435342CFC6210" KeyPath="yes" Source="$(var.BasePath)wwwroot_frameworkMicrosoft.Extensions.Configuration.Abstractions.dll.br" />
                    </Component>
                    <Component Id="cmp42CC4971550CD97B0B702F1471CB4C72" Guid="{108B946B-835F-4724-8286-A79019524C9B}">
                        <File Id="fil34237AA456807B011EED94EEC76855E5" KeyPath="yes" Source="$(var.BasePath)wwwroot_frameworkMicrosoft.Extensions.Configuration.Abstractions.dll.gz" />
                    </Component>
                    <Component Id="cmpF91962248A2205ABCF3B6BD33C74BAF4" Guid="{98E07B5D-447B-4731-9947-A6E6C7010E56}">
                        <File Id="fil8D0B84ED97BAF65B0ACE402589060BB0" KeyPath="yes" Source="$(var.BasePath)wwwroot_frameworkMicrosoft.Extensions.Configuration.dll" />
                    </Component>
                    <Component Id="cmp5DEDEDAD272B08B21352520216DB4781" Guid="{A268F034-777A-40D8-8AE7-86F41E5002A2}">
                        <File Id="filD823E906EA5BDACAD60F824A553714AE" KeyPath="yes" Source="$(var.BasePath)wwwroot_frameworkMicrosoft.Extensions.Configuration.dll.br" />
                    </Component>
                    <Component Id="cmp9173B268855879B81EDE2F0FD17367A7" Guid="{A1BE20EE-4DB9-458A-8D4F-EAA9D4FA098F}">
                        <File Id="fil1CACF1BC049F6E4239657CF6557D1070" KeyPath="yes" Source="$(var.BasePath)wwwroot_frameworkMicrosoft.Extensions.Configuration.dll.gz" />
                    </Component>
                    <Component Id="cmp5F4A3E3B2CBE10DA3D1BE6856D377E48" Guid="{D6EE7763-CA19-4AD8-AAB6-2579C4B1C214}">
                        <File Id="fil1F782C0520BFAD02930D3D41F1B1AC17" KeyPath="yes" Source="$(var.BasePath)wwwroot_frameworkMicrosoft.Extensions.Configuration.Json.dll" />
                    </Component>
                    <Component Id="cmpAEAABAB05E5E18C6E5D596B5134B11AA" Guid="{41A05EF2-9B05-47EE-ABA9-5D6FF05FE9AF}">
                        <File Id="fil1EA5135DAEC4BCA7F0393E23CEE978B0" KeyPath="yes" Source="$(var.BasePath)wwwroot_frameworkMicrosoft.Extensions.Configuration.Json.dll.br" />
                    </Component>
                    <Component Id="cmpB7F61D4C72FC6E25B4BD2D7C406028AF" Guid="{C650C27C-854B-4357-898A-B9BD5483A508}">
                        <File Id="filA7E3A736B61DC726180AD1A11AE061BC" KeyPath="yes" Source="$(var.BasePath)wwwroot_frameworkMicrosoft.Extensions.Configuration.Json.dll.gz" />
                    </Component>
                    <Component Id="cmpF7B0EE03C7D98B064308BA96508AE479" Guid="{29C33D15-B96B-47C0-8DAF-B95D330F7FF5}">
                        <File Id="filAC0A7B0EDFBB7791CBCAA7ABF495C580" KeyPath="yes" Source="$(var.BasePath)wwwroot_frameworkMicrosoft.Extensions.DependencyInjection.Abstractions.dll" />
                    </Component>
                    <Component Id="cmp86A1AADE6BF473BDAE88C6F24BCCA966" Guid="{48EE1B2B-54E1-468E-8EBD-6FB26F2B3919}">
                        <File Id="filD07CE14E098E28AF0A5FD83A0C257049" KeyPath="yes" Source="$(var.BasePath)wwwroot_frameworkMicrosoft.Extensions.DependencyInjection.Abstractions.dll.br" />
                    </Component>
                    <Component Id="cmp975438FFB4C20A8535CA709CDD345C48" Guid="{91C733F3-782D-4219-9A92-43BBEF0BA3B3}">
                        <File Id="fil606F02CF9E1797C7B7F108712DC24500" KeyPath="yes" Source="$(var.BasePath)wwwroot_frameworkMicrosoft.Extensions.DependencyInjection.Abstractions.dll.gz" />
                    </Component>
                    <Component Id="cmpAE73F552B8F7B3A26A0C4D716BDDB8B8" Guid="{D1A9B445-04EE-4611-8928-DA4AC13AAF6C}">
                        <File Id="fil15FEEF6525A9FC4EF41735F78B121AF3" KeyPath="yes" Source="$(var.BasePath)wwwroot_frameworkMicrosoft.Extensions.DependencyInjection.dll" />
                    </Component>
                    <Component Id="cmp7858B731FC612FE7E07A6122BFDBA4D8" Guid="{A1FBA75E-A354-4DE8-BB97-F8FEB0AC4A97}">
                        <File Id="filEA94D6EFC482DE959D14E73DEF2F9799" KeyPath="yes" Source="$(var.BasePath)wwwroot_frameworkMicrosoft.Extensions.DependencyInjection.dll.br" />
                    </Component>
                    <Component Id="cmp3CD942B25C15D4F3B3B8BA16662EFCEC" Guid="{86F17A53-55B0-437B-A9BE-6A73951D1B2F}">
                        <File Id="fil0A304EF7F79CF49A169E5A885F189277" KeyPath="yes" Source="$(var.BasePath)wwwroot_frameworkMicrosoft.Extensions.DependencyInjection.dll.gz" />
                    </Component>
                    <Component Id="cmp7BC7B696CC9C4EC000AAB5D52588B1BC" Guid="{469F6FDB-2C12-4404-96FC-C2C1C2DA989F}">
                        <File Id="filC4A48A09556A780EB3CFC1A33F965EFE" KeyPath="yes" Source="$(var.BasePath)wwwroot_frameworkMicrosoft.Extensions.Logging.Abstractions.dll" />
                    </Component>
                    <Component Id="cmp707551BC0DBA68C6D49E4ED09CC3FE90" Guid="{3E54DD8E-C58E-406E-BA57-2A269E781CDA}">
                        <File Id="filDBB61B02BDFF3C6843B1B468A559ADA9" KeyPath="yes" Source="$(var.BasePath)wwwroot_frameworkMicrosoft.Extensions.Logging.Abstractions.dll.br" />
                    </Component>
                    <Component Id="cmp515E95EEE930BE8B288A5B6D95C4F6B6" Guid="{245D47D0-F8E5-4623-8C58-D7A61C846FF4}">
                        <File Id="fil7FD0B4E3B7BCF3AA9C6C0E29EACDA2CD" KeyPath="yes" Source="$(var.BasePath)wwwroot_frameworkMicrosoft.Extensions.Logging.Abstractions.dll.gz" />
                    </Component>
                    <Component Id="cmpE060C6A31FDC9AA148DBE1CD795BDD87" Guid="{FE7403C6-356B-4185-9E9D-4D97822E63B4}">
                        <File Id="fil5605734554345F4F36AA24D3C64053AF" KeyPath="yes" Source="$(var.BasePath)wwwroot_frameworkMicrosoft.Extensions.Logging.dll" />
                    </Component>
                    <Component Id="cmp51F55DD4FA3ECC6EC277B603BAE77E4B" Guid="{EDDB08FF-FA51-4EB9-A38E-81CAC6F6E0F0}">
                        <File Id="fil40167D8C2CE51BF97351AF5BA196B067" KeyPath="yes" Source="$(var.BasePath)wwwroot_frameworkMicrosoft.Extensions.Logging.dll.br" />
                    </Component>
                    <Component Id="cmp09275652FE8A5CC3B05F9F04F4ACDAB8" Guid="{4CA48B37-DA80-46E2-8791-932F9BD2B90E}">
                        <File Id="fil7E1DCF5917210F2713343978FEAFC18C" KeyPath="yes" Source="$(var.BasePath)wwwroot_frameworkMicrosoft.Extensions.Logging.dll.gz" />
                    </Component>
                    <Component Id="cmp4C12430D81FCE43486C72C98ACA22DE4" Guid="{4E35A9F2-29C9-4898-BA11-F97B7F2468A1}">
                        <File Id="fil497BDFF56C9C493B4EA3BB05CB84E6C4" KeyPath="yes" Source="$(var.BasePath)wwwroot_frameworkMicrosoft.Extensions.Options.dll" />
                    </Component>
                    <Component Id="cmpAF9DE5022005A570309CDC608D8817FE" Guid="{D7F8D688-C979-4049-8D0D-B7902ACD1E9B}">
                        <File Id="filEDEFBD7086806983D3A9F7B302294874" KeyPath="yes" Source="$(var.BasePath)wwwroot_frameworkMicrosoft.Extensions.Options.dll.br" />
                    </Component>
                    <Component Id="cmp864779AFDF069BB096C3D55EB7E67D17" Guid="{5F1E29A3-6ED6-4339-93CE-E008A48E0167}">
                        <File Id="fil95DA4561466E116EBCFFB2304CE45E3D" KeyPath="yes" Source="$(var.BasePath)wwwroot_frameworkMicrosoft.Extensions.Options.dll.gz" />
                    </Component>
                    <Component Id="cmpBDCF4227A3F14BFD217701F4E1AEF581" Guid="{1D9DE43C-B81C-4166-97E4-BB869393E51C}">
                        <File Id="filFCEA26229C64F5B0DDC4F300E527003B" KeyPath="yes" Source="$(var.BasePath)wwwroot_frameworkMicrosoft.Extensions.Primitives.dll" />
                    </Component>
                    <Component Id="cmp8C2B056893FC9B4F917F1D60A86CAF46" Guid="{F5C200A4-4B00-4BC9-ADF0-816528383EE2}">
                        <File Id="filA5FEC50FDD462EFE465ED50197DA27AC" KeyPath="yes" Source="$(var.BasePath)wwwroot_frameworkMicrosoft.Extensions.Primitives.dll.br" />
                    </Component>
                    <Component Id="cmp5205763847DAE3B1F0E9A557ECEA0294" Guid="{8D771669-627C-47A5-A0B6-83148104C4F2}">
                        <File Id="fil6FE0C53D273C04D664103B017EB6B7FC" KeyPath="yes" Source="$(var.BasePath)wwwroot_frameworkMicrosoft.Extensions.Primitives.dll.gz" />
                    </Component>
                    <Component Id="cmpE22F274295C3DEF43785B45EC2A93623" Guid="{9F311DB3-4571-4CB6-86C2-AD10F536A480}">
                        <File Id="fil9CF7F6D0082CC00831BCB79B512F6DDC" KeyPath="yes" Source="$(var.BasePath)wwwroot_frameworkMicrosoft.JSInterop.dll" />
                    </Component>
                    <Component Id="cmpB8A2E71C8CF36DE8D8F53A1D8C90371C" Guid="{1AA84CBE-D211-45D4-9F58-76554544CC42}">
                        <File Id="fil343FB5CD812AFA562BF31FD0BDC5BCEE" KeyPath="yes" Source="$(var.BasePath)wwwroot_frameworkMicrosoft.JSInterop.dll.br" />
                    </Component>
                    <Component Id="cmp73A0603CACC8FD37AE5400E72FB390B4" Guid="{F4869EBE-CA6E-459B-BE6B-6F64E4E98C60}">
                        <File Id="fil8A998F649F697B54B836C9E31DFEFD27" KeyPath="yes" Source="$(var.BasePath)wwwroot_frameworkMicrosoft.JSInterop.dll.gz" />
                    </Component>
                    <Component Id="cmp2F2ED6725809828FFA8AF2B1F4793156" Guid="{5E0F9CD9-A13A-4F21-9B81-F4232A460F08}">
                        <File Id="fil2A6F7DDF91413905561875B8A447A547" KeyPath="yes" Source="$(var.BasePath)wwwroot_frameworkMicrosoft.JSInterop.WebAssembly.dll" />
                    </Component>
                    <Component Id="cmpDA5844562D73C6F04F932F5314A77A39" Guid="{51C97F73-DD58-4529-B174-E4FA52FA7AA9}">
                        <File Id="fil0F726A6415D2ADD8D2559118F8727F5B" KeyPath="yes" Source="$(var.BasePath)wwwroot_frameworkMicrosoft.JSInterop.WebAssembly.dll.br" />
                    </Component>
                    <Component Id="cmp7C9F2443CAE1F55295CD79951408C721" Guid="{620AC919-B5C7-47CA-9328-A997EF2A6253}">
                        <File Id="fil71F4B87F19AEAFF7939C1EE93FE6FE73" KeyPath="yes" Source="$(var.BasePath)wwwroot_frameworkMicrosoft.JSInterop.WebAssembly.dll.gz" />
                    </Component>
                    <Component Id="cmpA65D953E5A54247042B256470D47D4AB" Guid="{F053B0E4-C996-4310-8252-897F53F3E1B8}">
                        <File Id="fil8895E72799380F4E05CAEBCD685DDBE2" KeyPath="yes" Source="$(var.BasePath)wwwroot_frameworkSystem.Collections.Concurrent.dll" />
                    </Component>
                    <Component Id="cmp51F02589BA588D783C3C603656194CC7" Guid="{7DBE3773-D328-4905-AEB0-55547E987881}">
                        <File Id="fil004F6DABDDB1C96CE27C8F35F0DC9DDA" KeyPath="yes" Source="$(var.BasePath)wwwroot_frameworkSystem.Collections.Concurrent.dll.br" />
                    </Component>
                    <Component Id="cmp5937FF9962810B779AC2D3AB0E1FFA31" Guid="{B4E3EFBD-D454-427C-89CF-4992325069B0}">
                        <File Id="filBD9E064AE6BA6531330CC8A72F2D68BE" KeyPath="yes" Source="$(var.BasePath)wwwroot_frameworkSystem.Collections.Concurrent.dll.gz" />
                    </Component>
                    <Component Id="cmpB4F75E93D852D00850CC0545706516AC" Guid="{AFB6171F-EB34-4887-B8A6-AEB05E9DBDDB}">
                        <File Id="fil72DFEAD849270C7487E1922671555A98" KeyPath="yes" Source="$(var.BasePath)wwwroot_frameworkSystem.Collections.dll" />
                    </Component>
                    <Component Id="cmpC482BD0E23AD6B0866F0EC3B3EE21912" Guid="{96712566-72E8-4398-9281-BDC6920958B1}">
                        <File Id="fil9DD14B36011AD1AED77223FE87E184FC" KeyPath="yes" Source="$(var.BasePath)wwwroot_frameworkSystem.Collections.dll.br" />
                    </Component>
                    <Component Id="cmp20D34FC7203469574D5B870FBFDB6F7F" Guid="{12C35146-B5E7-4160-8F7D-ABAC85ECC51A}">
                        <File Id="filBB29036EFDD1D8D5AA5DC924CD208D5D" KeyPath="yes" Source="$(var.BasePath)wwwroot_frameworkSystem.Collections.dll.gz" />
                    </Component>
                    <Component Id="cmpA826E1BF780AE0933557676389100061" Guid="{FEB1C65D-1E53-4E89-BAD3-BE9BDC8B0B8E}">
                        <File Id="filAFDFA52206BB9423B6CE2C685284CA99" KeyPath="yes" Source="$(var.BasePath)wwwroot_frameworkSystem.ComponentModel.dll" />
                    </Component>
                    <Component Id="cmp2A2D126124E8909219DB6B0BD3DB7281" Guid="{7B41DDFB-6A7D-4B79-B200-A4DDAACD6A22}">
                        <File Id="fil271CA6B703F5070B21C12F8EADEAB1BF" KeyPath="yes" Source="$(var.BasePath)wwwroot_frameworkSystem.ComponentModel.dll.br" />
                    </Component>
                    <Component Id="cmp48F0DEF6E07C958C489DB5F099A47D02" Guid="{5C0DAE60-1552-4F6A-B845-9B509E04C91C}">
                        <File Id="filB43BEEE84D76BE6B8E121624D1937EB4" KeyPath="yes" Source="$(var.BasePath)wwwroot_frameworkSystem.ComponentModel.dll.gz" />
                    </Component>
                    <Component Id="cmpE51D0DCA6EE2771B65D0DB930DA0F422" Guid="{7E2CCB1F-0AB1-438C-A2D0-CC29E22270D8}">
                        <File Id="fil25D4C6054723DCF53741AEA2FCE1D13B" KeyPath="yes" Source="$(var.BasePath)wwwroot_frameworkSystem.Memory.dll" />
                    </Component>
                    <Component Id="cmp16DCE2C779691329ACBD41A17893807C" Guid="{1BF83602-DC3E-46B8-9B18-E0D8878B4413}">
                        <File Id="filBA4C797C8626633866C4D2E2FE570242" KeyPath="yes" Source="$(var.BasePath)wwwroot_frameworkSystem.Memory.dll.br" />
                    </Component>
                    <Component Id="cmp607A37F44559C1B9663107B3C5780416" Guid="{23343BC9-BF41-4E66-B3F6-A368A8889DB5}">
                        <File Id="filBFEDF80BCA685FDC664033CA845F4233" KeyPath="yes" Source="$(var.BasePath)wwwroot_frameworkSystem.Memory.dll.gz" />
                    </Component>
                    <Component Id="cmp3750CA84737F30C6A133B736D82311DC" Guid="{6CBA8DC9-B192-42C3-8D31-AD9A026C1E94}">
                        <File Id="filFE5E821A8E08C92D63E707F7DAB9B3A6" KeyPath="yes" Source="$(var.BasePath)wwwroot_frameworkSystem.Net.Http.dll" />
                    </Component>
                    <Component Id="cmp5F48A2E610A688238A2DF46678BFC4DA" Guid="{38C8A848-63A6-48B1-BC49-248952C3CA5A}">
                        <File Id="fil6A576146A10F514A4FEE0D9A2F62E66A" KeyPath="yes" Source="$(var.BasePath)wwwroot_frameworkSystem.Net.Http.dll.br" />
                    </Component>
                    <Component Id="cmp333F8CFB28D84B1BFBCFD0207AB4C8DC" Guid="{3AD9E240-3E6D-4E09-B91E-A8E471866767}">
                        <File Id="fil5C3E404B87A4A624EA1008033586135B" KeyPath="yes" Source="$(var.BasePath)wwwroot_frameworkSystem.Net.Http.dll.gz" />
                    </Component>
                    <Component Id="cmpED48E5DDB3EBB7C71EDACF54D349688E" Guid="{6432BBFD-BF55-4F25-BD89-746508129B88}">
                        <File Id="fil945264EEB7D05962944632DB40D103F6" KeyPath="yes" Source="$(var.BasePath)wwwroot_frameworkSystem.Net.Http.Json.dll" />
                    </Component>
                    <Component Id="cmpFA624270AF509809FE8CD8C49FA60779" Guid="{D65CACAF-3BED-4591-B80B-AF9CA572F470}">
                        <File Id="fil48DFB166E1B2D0E5F602E450BDA268D5" KeyPath="yes" Source="$(var.BasePath)wwwroot_frameworkSystem.Net.Http.Json.dll.br" />
                    </Component>
                    <Component Id="cmp50C00207A15C4550FE7A85241C74BBE8" Guid="{2AD2A4A1-7007-4413-AEDB-2590D7E520B0}">
                        <File Id="fil6585BFE45253B14831A430FDDECF04C7" KeyPath="yes" Source="$(var.BasePath)wwwroot_frameworkSystem.Net.Http.Json.dll.gz" />
                    </Component>
                    <Component Id="cmp56887909ACB3B8F6402B40E26751C3B3" Guid="{F7F53191-F371-46DA-B469-04D6D73ADFDF}">
                        <File Id="filE0FF1A9872F99F1E4D32910E53C186C0" KeyPath="yes" Source="$(var.BasePath)wwwroot_frameworkSystem.Net.Primitives.dll" />
                    </Component>
                    <Component Id="cmp0976629DB2D3387B7524A1EA5BB9828A" Guid="{A1D24AE4-2A92-42F3-927A-C7F6F0FA9BDA}">
                        <File Id="fil00CC944E233AB04D3545A0E244417382" KeyPath="yes" Source="$(var.BasePath)wwwroot_frameworkSystem.Net.Primitives.dll.br" />
                    </Component>
                    <Component Id="cmp9BEE2BBA2E625E10ACE5D38F9CE29E25" Guid="{AC479C09-1430-473B-B535-353378D3E807}">
                        <File Id="fil7EA368F875D5AAD4C64F77E41A6E23AF" KeyPath="yes" Source="$(var.BasePath)wwwroot_frameworkSystem.Net.Primitives.dll.gz" />
                    </Component>
                    <Component Id="cmp1740817C651EE407F3A14689504EEF0B" Guid="{5F40E782-D9F5-4094-BF3A-D96BA646519A}">
                        <File Id="fil92050D8BEB3B82F62508D2473289059B" KeyPath="yes" Source="$(var.BasePath)wwwroot_frameworkSystem.Private.CoreLib.dll" />
                    </Component>
                    <Component Id="cmpB1F2210BCA59E771BFE567C4B70223E3" Guid="{9F599BC5-AC3F-4708-8EEE-33AD7CF44D9F}">
                        <File Id="filFC0EA5B332077F9C3AD1339464605983" KeyPath="yes" Source="$(var.BasePath)wwwroot_frameworkSystem.Private.CoreLib.dll.br" />
                    </Component>
                    <Component Id="cmpA098BA5EC2A20A12327DB7E9D1560C36" Guid="{B46F7ACB-8D2F-48E4-8329-4DB270626DF5}">
                        <File Id="filF20866D9620DEA24F42C6BC3533B0DD0" KeyPath="yes" Source="$(var.BasePath)wwwroot_frameworkSystem.Private.CoreLib.dll.gz" />
                    </Component>
                    <Component Id="cmp4DBC5ACFDAEC1C4E3CD7EF1AC171CDD4" Guid="{B6B28027-F77B-4BA9-82BE-99F5D12BD14A}">
                        <File Id="fil84342B01143909094AC4F27D453CCF22" KeyPath="yes" Source="$(var.BasePath)wwwroot_frameworkSystem.Private.Runtime.InteropServices.JavaScript.dll" />
                    </Component>
                    <Component Id="cmp1173314C87D3A1C6669E796D63BA0B5D" Guid="{9B209BED-B524-4AD2-843B-66C0358E78C9}">
                        <File Id="fil3ABC05F2D210D029B9BC94BE2FC22A9C" KeyPath="yes" Source="$(var.BasePath)wwwroot_frameworkSystem.Private.Runtime.InteropServices.JavaScript.dll.br" />
                    </Component>
                    <Component Id="cmp0A248A654EDFBDA44693AADCAC9DD461" Guid="{922B4040-685C-460D-BF3F-28AA61DD8BFC}">
                        <File Id="fil9FB6E89FC7B2CCB51474A12BFA99B4FC" KeyPath="yes" Source="$(var.BasePath)wwwroot_frameworkSystem.Private.Runtime.InteropServices.JavaScript.dll.gz" />
                    </Component>
                    <Component Id="cmp9DB136D1B06E1CFF3226F8FF247FA400" Guid="{D7D96DAF-DF94-42AA-866D-7283605EAD93}">
                        <File Id="fil112BD196CC1B5B4AD4D7D583398FE147" KeyPath="yes" Source="$(var.BasePath)wwwroot_frameworkSystem.Private.Uri.dll" />
                    </Component>
                    <Component Id="cmpDCFCF9BD3503D6340AA0A2B21FE7FBCC" Guid="{ED5FEA3F-00F4-41B5-B97A-402ACCE765C8}">
                        <File Id="filE2A25AFD13442571FE641F364E470893" KeyPath="yes" Source="$(var.BasePath)wwwroot_frameworkSystem.Private.Uri.dll.br" />
                    </Component>
                    <Component Id="cmpD1D9EEDAFC075B3BC32EE7298288086F" Guid="{E14DA94F-CC7D-46E7-A992-B8A75A49E432}">
                        <File Id="fil9B542E73B61E1A0DB2E6354A641F6CEB" KeyPath="yes" Source="$(var.BasePath)wwwroot_frameworkSystem.Private.Uri.dll.gz" />
                    </Component>
                    <Component Id="cmp740321EAD6FA852678D49E02C9131145" Guid="{12F99079-3F99-4690-BCB8-431A0CC37716}">
                        <File Id="fil64814F821C696DC6C9496821E23668F2" KeyPath="yes" Source="$(var.BasePath)wwwroot_frameworkSystem.Runtime.CompilerServices.Unsafe.dll" />
                    </Component>
                    <Component Id="cmp743C84704C46065CC2390782C88647FE" Guid="{44B7F53C-993A-40B0-A8E5-7D38720E4111}">
                        <File Id="filC26B779E0B33BAFC1A30D48B1A870ED8" KeyPath="yes" Source="$(var.BasePath)wwwroot_frameworkSystem.Runtime.CompilerServices.Unsafe.dll.br" />
                    </Component>
                    <Component Id="cmpC370C60937565F7FB65302F95A8C1FF0" Guid="{EF593AFB-4158-479E-AAC2-192AC7F57579}">
                        <File Id="fil19E6EEB3BDAF719BF0133E45D88A03DF" KeyPath="yes" Source="$(var.BasePath)wwwroot_frameworkSystem.Runtime.CompilerServices.Unsafe.dll.gz" />
                    </Component>
                    <Component Id="cmpE9537DAAFB13ACF42382B5F39E041AAE" Guid="{F2484F22-5F1F-4490-B163-5D80D8822135}">
                        <File Id="filB923ECB75321ADB1F2B711305B6AB357" KeyPath="yes" Source="$(var.BasePath)wwwroot_frameworkSystem.Runtime.dll" />
                    </Component>
                    <Component Id="cmp3AE669088A014BAB8C199390E02DB7E7" Guid="{E5B2977C-1B3E-4CF2-876C-DAC9579C9330}">
                        <File Id="filF4DCDF75398370DD75D51E1510602BFC" KeyPath="yes" Source="$(var.BasePath)wwwroot_frameworkSystem.Runtime.dll.br" />
                    </Component>
                    <Component Id="cmpAB7158EA13F736C1E0451D0807BE4947" Guid="{AC9943C5-30E1-4ED4-B75C-F0B067C1A090}">
                        <File Id="filD4698EA1B34887AE694A74475593E3E3" KeyPath="yes" Source="$(var.BasePath)wwwroot_frameworkSystem.Runtime.dll.gz" />
                    </Component>
                    <Component Id="cmpBE312FE3FB6A6BDDAB0FE75F1EC0F480" Guid="{04293042-0055-4A8E-A2E8-DE9374B4758A}">
                        <File Id="fil18CECB88CBBA124C417F9726260D1B30" KeyPath="yes" Source="$(var.BasePath)wwwroot_frameworkSystem.Text.Encodings.Web.dll" />
                    </Component>
                    <Component Id="cmp9D0A4D86ADBE049A6CD726A4C5FD96EE" Guid="{DED6A3FF-479E-45E9-BA1C-1D48FEAD61FE}">
                        <File Id="filE932324B082B8169CC0334B9B68E7346" KeyPath="yes" Source="$(var.BasePath)wwwroot_frameworkSystem.Text.Encodings.Web.dll.br" />
                    </Component>
                    <Component Id="cmp6C9D44905338F4A80BCF436FADD3333E" Guid="{7482DA68-E977-4B51-BD6B-44DE843BFBF6}">
                        <File Id="fil2CD4D93571823B42747D1E81549C12DA" KeyPath="yes" Source="$(var.BasePath)wwwroot_frameworkSystem.Text.Encodings.Web.dll.gz" />
                    </Component>
                    <Component Id="cmpED3B8CFD2C58E76550E55BB568433B01" Guid="{77F7D092-BAFF-4368-BD35-FBB8D7E4A676}">
                        <File Id="fil6242EB6396FCEB42E682BC2B7EB5ECAD" KeyPath="yes" Source="$(var.BasePath)wwwroot_frameworkSystem.Text.Json.dll" />
                    </Component>
                    <Component Id="cmpBA0FF53077EEA56D55F8AB637925580B" Guid="{9010AEC8-0EB3-4DA4-A69C-16CCA4CA82FA}">
                        <File Id="fil1D0FC0B73348482750C57247305BA66E" KeyPath="yes" Source="$(var.BasePath)wwwroot_frameworkSystem.Text.Json.dll.br" />
                    </Component>
                    <Component Id="cmp63CB25923717C691B1A5EA40B6C111F0" Guid="{A570FD8B-480D-4429-8EF9-90DB914E9A08}">
                        <File Id="filA19C569DA0C381BF3584866DD2BAA824" KeyPath="yes" Source="$(var.BasePath)wwwroot_frameworkSystem.Text.Json.dll.gz" />
                    </Component>
                </Directory>
            </Directory>
        </DirectoryRef>
    </Fragment>
    <Fragment>
        <ComponentGroup Id="PublishedComponents">
            <ComponentRef Id="cmpA0863526952F7834E7C922F065E4C8A8" />
            <ComponentRef Id="cmpF82FCA80BBAF44D285C97F10993DEEE6" />
            <ComponentRef Id="cmp80A32365AE3ACFE27BDD385AE91DCE74" />
            <ComponentRef Id="cmpF69BDBE9F42451436A0B8C022F6D4636" />
            <ComponentRef Id="cmpFD59DF07063AC308C40670A4B81A9B57" />
            <ComponentRef Id="cmpECDF00A9B659260C50885BEEADBCABC0" />
            <ComponentRef Id="cmpE351BCDC42EF493685CEF4080E08E51E" />
            <ComponentRef Id="cmp651C3999A00B5D89ACAE2D3A9BE7F91D" />
            <ComponentRef Id="cmpBCBFD41B8B964007BA9BF340925C6493" />
            <ComponentRef Id="cmp9A7CD58BE639399F7BDAA987492B6E65" />
            <ComponentRef Id="cmpB818026BC106A80C4FD6E90BF8F06CDA" />
            <ComponentRef Id="cmp2F0A313AE6306F9CE5E760AF214DC789" />
            <ComponentRef Id="cmp6D6CC90C40E2F632C9128346BA7F188F" />
            <ComponentRef Id="cmpA76C6CFFA9DCB201D0EEDB226B0B9E25" />
            <ComponentRef Id="cmp17959BADF0C2D7B7AB4867F09DA031B8" />
            <ComponentRef Id="cmpDF4C205418A6D7FE6FEA71F3B8998FAC" />
            <ComponentRef Id="cmpDA8B0BBD16E996DE615D6861DBA6442F" />
            <ComponentRef Id="cmp3D2A78302A6149F7464B0EDCD758BCCF" />
            <ComponentRef Id="cmp8C674FD6A69988A60A77A4CEE0F53781" />
            <ComponentRef Id="cmpDB4717CBBFD23A9652DB5B136ABB5D75" />
            <ComponentRef Id="cmpCF0F711637230B4D1AE41109C02C9142" />
            <ComponentRef Id="cmpF88B96E5973E0D28B511DC6371DB06E0" />
            <ComponentRef Id="cmpB139B49DF4DF8F44C525B449EA8187F7" />
            <ComponentRef Id="cmp5B65C45828B950384B8C5C76AB9F6EF0" />
            <ComponentRef Id="cmp5A9228A102598245A49CC73E4B42BFFD" />
            <ComponentRef Id="cmp0B11C97F8D96134C5A582DAA9D362721" />
            <ComponentRef Id="cmp22B9B089D6F03FEB02531ECB35C82F8E" />
            <ComponentRef Id="cmp958171B03EC06C56FB11A52D468E5F57" />
            <ComponentRef Id="cmpB322B77CE8D40EBAD199D45D0E4F25F0" />
            <ComponentRef Id="cmp920020A0D51F9A626EB2143066649049" />
            <ComponentRef Id="cmp6A573805E6F545A7F37C18527646950E" />
            <ComponentRef Id="cmp0D2F1CB83AD7A688791EFF1B2407B5F1" />
            <ComponentRef Id="cmp8D45D052C68877B0B807B3D45E104FF6" />
            <ComponentRef Id="cmpD91242D38C41E4403B7679B93F1EEBB4" />
            <ComponentRef Id="cmpCB80CFC92D7C1BB2787B948E67B42B03" />
            <ComponentRef Id="cmpBCCB7ADB11BD8E995C2D17B5FDFD7CA8" />
            <ComponentRef Id="cmp6300BF95DDDCF98EC047B2991C2BA653" />
            <ComponentRef Id="cmp087AEDA3ECF7BE8C1137AADA0E56E0A6" />
            <ComponentRef Id="cmpEBA035EA7685839B21FA1B833C2D781C" />
            <ComponentRef Id="cmp87BF3E7D495DC9B53F7ED2A371F1FE92" />
            <ComponentRef Id="cmp2220CCF66448F1A862D1353191CE69F5" />
            <ComponentRef Id="cmp791F5746D6F2AC68E2E8A50343B869F7" />
            <ComponentRef Id="cmp3DA139ADE5BC562B564DECE23AFFD8D0" />
            <ComponentRef Id="cmp3F52B8D89D587889C8A65D69E74B5F51" />
            <ComponentRef Id="cmp102AA2B65E2F7CFDBE0F937F8D225168" />
            <ComponentRef Id="cmp022B66C05DEF11B72F5542F7A563B670" />
            <ComponentRef Id="cmp0F72C70E7993CC0B3E9FF70ED40066D9" />
            <ComponentRef Id="cmpFA0036474721DE0D4163E05499F39951" />
            <ComponentRef Id="cmpB5AF9E63913432C07629EC20330320A3" />
            <ComponentRef Id="cmp9D66267AB1CAF7A98DFC42947DC635D4" />
            <ComponentRef Id="cmpCD4F94EB73F3962B42308170454B4366" />
            <ComponentRef Id="cmp6D7DA841FD268735AFB1026BA6AE24A3" />
            <ComponentRef Id="cmp08111D788677D8B8150650EE58FB5962" />
            <ComponentRef Id="cmp5A46DA40AED3B5E10AF9751BA0029C2C" />
            <ComponentRef Id="cmp6A6C2351815759B4DB8982A7741D0ABA" />
            <ComponentRef Id="cmp82623C6CA3D1FE2B38C69748720D46CB" />
            <ComponentRef Id="cmp2EAADFED8A771ED40D36F4261011FC42" />
            <ComponentRef Id="cmp0C35E5441CB1AEE868B0841FC2B3727D" />
            <ComponentRef Id="cmpF7B971FD5EDDB748109439252E62DBB2" />
            <ComponentRef Id="cmp1A38450971536177F12598D9DA69460B" />
            <ComponentRef Id="cmpB3C98B1AF19712A5A4C90299621D5AA3" />
            <ComponentRef Id="cmpB532E6FD17B9FD1DDEF930DAB1CDCC8C" />
            <ComponentRef Id="cmp930FCEACB08C3F828E26B2B4AAAD3B58" />
            <ComponentRef Id="cmp94D35364CD546AECFF1FD3E16E7705BC" />
            <ComponentRef Id="cmpEEB478F290FD8E012F256864DA59B87A" />
            <ComponentRef Id="cmpABBCFC94814B14153BE6A9A7989C2A0A" />
            <ComponentRef Id="cmpF242BF7465335E363684D1995205E1BD" />
            <ComponentRef Id="cmp02E6C2F0AD10D0478D86BE37452B0914" />
            <ComponentRef Id="cmp4A0D7430E5062327165BBC0627BB2583" />
            <ComponentRef Id="cmp39219EB53A18F9EF8C1D9E629B44B00E" />
            <ComponentRef Id="cmpA1E64C6DD02D1B8D3365CDF712DE7740" />
            <ComponentRef Id="cmp2F00835F6AB457CB0746B0CF23BBABC4" />
            <ComponentRef Id="cmp728A6879EC0D4538CF0D9A610CDB29AB" />
            <ComponentRef Id="cmpCF6F10CA4A3650B98898E76461DBDB47" />
            <ComponentRef Id="cmp512FC92BCC546D0A442E2A50E378BA60" />
            <ComponentRef Id="cmpA8FCAF75866687FC4A4693E426913FBA" />
            <ComponentRef Id="cmp747FF5C347AA12FFF91DF70F289BC1F7" />
            <ComponentRef Id="cmpDEF19AE67395660D7A04537C771DEAEA" />
            <ComponentRef Id="cmp286486FA354377E5944B31BCB5E1BD86" />
            <ComponentRef Id="cmpDA5F2E45468ACB6957DF118202F57CBA" />
            <ComponentRef Id="cmp329238427D6DFA82B9DE0EC84FAA175F" />
            <ComponentRef Id="cmp006F8D28BA0AFE320C8E136D5C68A581" />
            <ComponentRef Id="cmp538D88FA41B7B0483DDF492891D5D684" />
            <ComponentRef Id="cmpF9E68B4BB97E17771AA221E83025CF38" />
            <ComponentRef Id="cmpA38DF32DEFA15EAB22A6AF80CC0DBA93" />
            <ComponentRef Id="cmp7A14C98BD98024E214134EE58D8A2A0D" />
            <ComponentRef Id="cmpFB1DAD1066930B4BCF63BD47478DA044" />
            <ComponentRef Id="cmpD5C2C4A360A21B8188754FC87E3531E0" />
            <ComponentRef Id="cmp971F14265094A43D81FE6F2B7D1AF6B7" />
            <ComponentRef Id="cmp0326270DDC7B6B2E7294E885AF295E3A" />
            <ComponentRef Id="cmp514A78E3D9A3A1B0381C2609914F3FCD" />
            <ComponentRef Id="cmp3B994E9EC7D69DA30E3341DDCA1C2E35" />
            <ComponentRef Id="cmp8648F3FB6E0C32E344C77586438BA083" />
            <ComponentRef Id="cmpA160DA65B8DFE4CF4F6754B9B315896E" />
            <ComponentRef Id="cmp4242E026351F6B91ED373820F5BA7E70" />
            <ComponentRef Id="cmp42CC4971550CD97B0B702F1471CB4C72" />
            <ComponentRef Id="cmpF91962248A2205ABCF3B6BD33C74BAF4" />
            <ComponentRef Id="cmp5DEDEDAD272B08B21352520216DB4781" />
            <ComponentRef Id="cmp9173B268855879B81EDE2F0FD17367A7" />
            <ComponentRef Id="cmp5F4A3E3B2CBE10DA3D1BE6856D377E48" />
            <ComponentRef Id="cmpAEAABAB05E5E18C6E5D596B5134B11AA" />
            <ComponentRef Id="cmpB7F61D4C72FC6E25B4BD2D7C406028AF" />
            <ComponentRef Id="cmpF7B0EE03C7D98B064308BA96508AE479" />
            <ComponentRef Id="cmp86A1AADE6BF473BDAE88C6F24BCCA966" />
            <ComponentRef Id="cmp975438FFB4C20A8535CA709CDD345C48" />
            <ComponentRef Id="cmpAE73F552B8F7B3A26A0C4D716BDDB8B8" />
            <ComponentRef Id="cmp7858B731FC612FE7E07A6122BFDBA4D8" />
            <ComponentRef Id="cmp3CD942B25C15D4F3B3B8BA16662EFCEC" />
            <ComponentRef Id="cmp7BC7B696CC9C4EC000AAB5D52588B1BC" />
            <ComponentRef Id="cmp707551BC0DBA68C6D49E4ED09CC3FE90" />
            <ComponentRef Id="cmp515E95EEE930BE8B288A5B6D95C4F6B6" />
            <ComponentRef Id="cmpE060C6A31FDC9AA148DBE1CD795BDD87" />
            <ComponentRef Id="cmp51F55DD4FA3ECC6EC277B603BAE77E4B" />
            <ComponentRef Id="cmp09275652FE8A5CC3B05F9F04F4ACDAB8" />
            <ComponentRef Id="cmp4C12430D81FCE43486C72C98ACA22DE4" />
            <ComponentRef Id="cmpAF9DE5022005A570309CDC608D8817FE" />
            <ComponentRef Id="cmp864779AFDF069BB096C3D55EB7E67D17" />
            <ComponentRef Id="cmpBDCF4227A3F14BFD217701F4E1AEF581" />
            <ComponentRef Id="cmp8C2B056893FC9B4F917F1D60A86CAF46" />
            <ComponentRef Id="cmp5205763847DAE3B1F0E9A557ECEA0294" />
            <ComponentRef Id="cmpE22F274295C3DEF43785B45EC2A93623" />
            <ComponentRef Id="cmpB8A2E71C8CF36DE8D8F53A1D8C90371C" />
            <ComponentRef Id="cmp73A0603CACC8FD37AE5400E72FB390B4" />
            <ComponentRef Id="cmp2F2ED6725809828FFA8AF2B1F4793156" />
            <ComponentRef Id="cmpDA5844562D73C6F04F932F5314A77A39" />
            <ComponentRef Id="cmp7C9F2443CAE1F55295CD79951408C721" />
            <ComponentRef Id="cmpA65D953E5A54247042B256470D47D4AB" />
            <ComponentRef Id="cmp51F02589BA588D783C3C603656194CC7" />
            <ComponentRef Id="cmp5937FF9962810B779AC2D3AB0E1FFA31" />
            <ComponentRef Id="cmpB4F75E93D852D00850CC0545706516AC" />
            <ComponentRef Id="cmpC482BD0E23AD6B0866F0EC3B3EE21912" />
            <ComponentRef Id="cmp20D34FC7203469574D5B870FBFDB6F7F" />
            <ComponentRef Id="cmpA826E1BF780AE0933557676389100061" />
            <ComponentRef Id="cmp2A2D126124E8909219DB6B0BD3DB7281" />
            <ComponentRef Id="cmp48F0DEF6E07C958C489DB5F099A47D02" />
            <ComponentRef Id="cmpE51D0DCA6EE2771B65D0DB930DA0F422" />
            <ComponentRef Id="cmp16DCE2C779691329ACBD41A17893807C" />
            <ComponentRef Id="cmp607A37F44559C1B9663107B3C5780416" />
            <ComponentRef Id="cmp3750CA84737F30C6A133B736D82311DC" />
            <ComponentRef Id="cmp5F48A2E610A688238A2DF46678BFC4DA" />
            <ComponentRef Id="cmp333F8CFB28D84B1BFBCFD0207AB4C8DC" />
            <ComponentRef Id="cmpED48E5DDB3EBB7C71EDACF54D349688E" />
            <ComponentRef Id="cmpFA624270AF509809FE8CD8C49FA60779" />
            <ComponentRef Id="cmp50C00207A15C4550FE7A85241C74BBE8" />
            <ComponentRef Id="cmp56887909ACB3B8F6402B40E26751C3B3" />
            <ComponentRef Id="cmp0976629DB2D3387B7524A1EA5BB9828A" />
            <ComponentRef Id="cmp9BEE2BBA2E625E10ACE5D38F9CE29E25" />
            <ComponentRef Id="cmp1740817C651EE407F3A14689504EEF0B" />
            <ComponentRef Id="cmpB1F2210BCA59E771BFE567C4B70223E3" />
            <ComponentRef Id="cmpA098BA5EC2A20A12327DB7E9D1560C36" />
            <ComponentRef Id="cmp4DBC5ACFDAEC1C4E3CD7EF1AC171CDD4" />
            <ComponentRef Id="cmp1173314C87D3A1C6669E796D63BA0B5D" />
            <ComponentRef Id="cmp0A248A654EDFBDA44693AADCAC9DD461" />
            <ComponentRef Id="cmp9DB136D1B06E1CFF3226F8FF247FA400" />
            <ComponentRef Id="cmpDCFCF9BD3503D6340AA0A2B21FE7FBCC" />
            <ComponentRef Id="cmpD1D9EEDAFC075B3BC32EE7298288086F" />
            <ComponentRef Id="cmp740321EAD6FA852678D49E02C9131145" />
            <ComponentRef Id="cmp743C84704C46065CC2390782C88647FE" />
            <ComponentRef Id="cmpC370C60937565F7FB65302F95A8C1FF0" />
            <ComponentRef Id="cmpE9537DAAFB13ACF42382B5F39E041AAE" />
            <ComponentRef Id="cmp3AE669088A014BAB8C199390E02DB7E7" />
            <ComponentRef Id="cmpAB7158EA13F736C1E0451D0807BE4947" />
            <ComponentRef Id="cmpBE312FE3FB6A6BDDAB0FE75F1EC0F480" />
            <ComponentRef Id="cmp9D0A4D86ADBE049A6CD726A4C5FD96EE" />
            <ComponentRef Id="cmp6C9D44905338F4A80BCF436FADD3333E" />
            <ComponentRef Id="cmpED3B8CFD2C58E76550E55BB568433B01" />
            <ComponentRef Id="cmpBA0FF53077EEA56D55F8AB637925580B" />
            <ComponentRef Id="cmp63CB25923717C691B1A5EA40B6C111F0" />
        </ComponentGroup>
    </Fragment>
</Wix>

 Добавьте этот новый файл в проект инсталлятора (Solution Explorer -> Add -> Existing Item).

Product.wxs

Теперь, перейдем в файл Product.wxs. Если кратко, то это основной файл, в котором описывается вся логика создания инсталлятора, его конфигурация и метаданные. Для небольших решений проект wix может в полне себе состоять только из этого файла.

Давайте добавим компоненты в сам инсталлятор. Для этого нам необходимо перед закрывающимся тегом </Wix> удалить узел <Fragment> (он генерится Wix по-умолчанию при создании проекта) на следующую секцию:

<Fragment>
	<ComponentGroup Id="ProductComponents" Directory="INSTALLFOLDER">
      		<ComponentGroupRef Id="PublishedComponents"/>
	</ComponentGroup>
</Fragment>

Таким образом, мы создали группу компонентов ProductComponents, которые будут развернуты по пути соответствующему свойству INSTALLFOLDER (она же виртуальная директория), при этом сами компоненты мы передали по ссылке из группы PublishedComponents, сгенерированной c помощью Heat.exe.

Удалите тег <MediaTemplate/> (ищите внутри тега Product) — он используется в качестве заглушки и, если его не удалить, то вы обнаружите, что вместе с .msi-файлом генерится .cab-файл. Нам же необходимо поместить его внутрь файла .msi. Для этого перед закрывающимся тегом <Product> необходимо добавить тег <Media>:

<Media Id="1"
           Cabinet="media.cab"
           EmbedCab="yes"
           DiskPrompt="CD-ROM #1" />
<Property Id="DiskPrompt"
           Value="$(var.ProductName) CD-ROM #1" />

Тем самым мы описываем компонент media.cab – архив с файлами для установки. EmbedCab=”yes” – указывает на то, что архив будет встроен в .msi-файл, а свойство DiskPrompt="CD-ROM #1" – является легаси-наследием со времен, когда программные продукты распространялись на материальных носителях и разработчикам инсталляционных пакетов приходилось решать проблему поставки продукта на нескольких дисках из-за нехватки дискового пространства на носителях. Также не забываем добавить Property со ссылкой на DiskPromt, чтобы Windows Installer мог создать сообщение пользователю о необходимости вставить определенный диск. Обращаю внимание, что DiskPrompt является необязательным, и, если вы не планируете поставлять ваш продукт на физическом носителе, то и проставлять его ненужно (то же самое касается и Property Id=»DiskPromt»).

Теперь нам необходимо добавить интерфейс для взаимодействия с пользователем: сделать это можно двумя путями. Или самостоятельно описывать интерфейс, или воспользоваться готовыми шаблонами, которые поставляются вместе с wix. Так как разработка интерфейса – это очень объемная тема, мы воспользуемся готовым решением.

Щелкаем правой клавишей по названию проекта в Solution Explorer -> Add Reference — открываем папку, в которую был установлен WiX, подкаталог bin, файл WixUIExtension.dll.

Снова перед закрывающимся тегом <Product> добавляем следующий код:

    <Property Id="WIXUI_INSTALLDIR" Value="INSTALLFOLDER" ></Property>
    <UIRef Id="WixUI_InstallDir"/>

Wix предлагает пользователю несколько сценариев пользовательского интерфейса один из которых называется WixUI_InstallDir и, как можно догадаться из названия, позволяет пользователю выбирать в какую директорию будет произведена установка продукта. Путь до выбранной директории передается через свойство INSTALLFOLDER, которое используется в шаблоне WixUI_InstallDir на что и указывается Id="WIXUI_INSTALLDIR".

Работа с IIS

Для установки проекта, в нашем случае, описанных шагов недостаточно – не случайно же был выбран web-проект: теперь его нужно затащить на IIS. Разработчики Wix позаботились о нас и добавили в пакет поставки WixIISExtention – расширение, позволяющее развернуть приложение на web-сервере.

Подключаем расширение WixIISExtention: правая кнопка маши по проекту -> Add Reference — директория в которую установлен WiX, подкаталог bin, файл WixIISExtension.dll. У меня здесь C:Program Files (x86)WiX Toolset v3.11binWixIISExtension.dll

Снова правая кнопка мыши по проекту инсталлятора -> New item… -> Wix/v3 и выбираем Installer File (.wxs). Назовем его IISConfiguration.wxs. Стираем все, что находится внутри файла и заменяем на следующее содержание:

<?xml version="1.0" encoding="UTF-8"?>
<Wix xmlns="http://schemas.microsoft.com/wix/2006/wi" xmlns:iis="http://schemas.microsoft.com/wix/IIsExtension">
    <Fragment>
    <DirectoryRef Id="TARGETDIR">
      <!--Creating an application pool-->
      <Component Id="BlazorAppPool"
                 Guid="{5766F29A-7FD5-4359-BD6C-5E5C543FEFFD}"
                 KeyPath="yes"
                 Win64="yes">
        <iis:WebAppPool Id="BlazorAppPool"
                        Name="BlazorAppWebSite"
                        Identity="localSystem"
                        ManagedPipelineMode="Integrated"
                        ManagedRuntimeVersion="v4.0"/>
      </Component>
      <!--Setup IIS for Blazor App-->
      <Component Id="InstallWebsite"
                 Guid="{4AB0376B-F778-4D0F-8CA6-2F308AB7B077}"
                 KeyPath="yes">
        <iis:WebSite Id="BlazorApp"
                     Description='BlazorAppWasm'
                     Directory='INSTALLFOLDER'
                     AutoStart='yes'
                     StartOnInstall='yes'>
          <iis:WebAddress Id="localhost_BlazorApp"
                          Port="8085" IP="127.0.0.1"/>
          <iis:WebApplication Id="BlazorWasmApplication"
                              Name="Blazor Web Application"
                              WebAppPool="BlazorAppPool"/>
        </iis:WebSite>
      </Component>

    </DirectoryRef>

    <ComponentGroup Id="BlazorAppIisConfiguration">
      <ComponentRef Id="InstallWebsite"/>
      <ComponentRef Id="BlazorAppPool"/>
    </ComponentGroup>
    </Fragment>
</Wix>

Давайте разберем по тегам содержимое файла:

  • внутри тега Wix добавляем ссылку на IISExtention c помощью вот этого атрибута xmlns:iis="http://schemas.microsoft.com/wix/IIsExtension". Не забываем это делать, иначе проект не заведется.

  • внутри тега Fragment начинаем описывать настройку IIS. Так как все компоненты должны получить путь установки обязательно упаковываем их в тег Directory или DirectoryRef, если директория уже объявлена. В нашем случае это TARGETDIR – корень виртуального каталога, объявленный на стадии создании проекта Wix

  • объявляем компонент с помощью тега Component, присваиваем ему ID – не забывайте, что Id должен быть уникальным для каждого компонента (помним, что для базы данных Windows Installer он выполняет роль первичного ключа). Генерим GUID любым удобным для вас способом. Я предпочитаю использовать средства Visual Studio (Tools -> Create GUID и выбрать Registry Format). Указываем компоненту свойство keypath=”yes” – это необходимо, чтобы установщик удостоверился, что данный компонент не был ранее установлен чтобы избежать перетирания существующих версий компонента (будет заменен только в том случае, если будет предложена более новая версия компонента), а также для осуществления восстановления.

  • Внутри компонента описываем настройки AppPool для IIS: прописываем уникальный Id, имя пула, указываем тип учетной записи – в нашем случае это LocalSystem (желающие получить дополнительную информацию о них могу перейти по ссылке https://windowsnotes.ru/iis/application-pool-identities-v-iis/). Указываем режим конвейера Integrated и последнюю доступную версию .net clr.

После того, как нами были описаны настройки WebPool’а мы должны сконфигурировать сайт, для чего снова создается новый компонент. Назовем его «InstallWebsite»:

  • Конфигурация сайта производится с использованием свойств тега <iis:WebSite>. Через свойства тега передаем его Id (помним, что он должен быть уникальным), описание и  виртуальную директорию. Чтобы после установки получить сразу работающий проект, не требующий от пользователя дополнительных телодвижений добавим свойствам AutoStart и StartOnInstall значение yes.

  • С помощью свойств тега iis:WebAddress передадим адрес сайта: в нашем случае он запустится локально на порту 8085 (можете выбрать любой доступный порт)

  • В теге iis:WebApplication мы указали связь сайта с WebPool’ом

На этом IIS можно считать сконфигурированным. Теперь создаем группу компонентов с названием BlazorAppIisConfiguration (см. 35-ю строчку) и закидываем в нее два наших созданных выше компонента (с описанием конфигурации AppPool’а и сайта).

И снова Product.wxs

Снова открываем файл Product.wxs. Добавляем перед закрывающимся тегом </Product> тег <Feature> со следующим содержимым:

<Feature Id="BlazorAppFeature"
             Title="BlazorWasmApplication"
             Level="1"
             ConfigurableDirectory="INSTALLFOLDER"
             AllowAdvertise="no"
             Absent='disallow'>
      <ComponentGroupRef Id="BlazorAppIisConfiguration" />
      <ComponentGroupRef Id="PublishedComponents" />
</Feature>

Первые два свойства традиционно Id и Название. Что касается свойства Level – оно служит для включения (при значении «1») или исключения (при значении «0») фичи из процесса установки. Делается это, как правило, путем добавления публичного свойства (тег Property), которое может принимать значение через аргументы командной строки или иными способами и последующим использованием через тег Condition, который должен располагаться внутри тега <Feature>. Обязательно разберем работу с условиями, но не в этой статье.

Свойство ConfigurableDirectory указывает на название виртуальной директории в которой будет лежать наш программный продукт, нуждающийся в разворачивании на IIS. Свойства AllowAdvertise="no" и Absent='disallow‘ используем с указанными значениями, так как мы не планируем предоставлять пользователю возможность кастомизации процесса установки в части управления параметрами настройки IIS и записи файлов проекта.

Далее, внутрь указанного тега кладем ссылки на описанные ранее группы объектов (см. 7 и 8 строчки).

Теперь нам необходимо установить связь виртуальной директории, являющейся корневой для нашего проекта, с адресом в дисковом пространстве компьютера пользователя куда будет непосредственно установлен проект. Делается это следующим образом:

<Fragment>
		<Directory Id="TARGETDIR" Name="SourceDir">
			<Directory Id="ProgramFilesFolder">
				<Directory Id="INSTALLFOLDER" Name="InstallerForBlazorApp" />
			</Directory>
		</Directory>
</Fragment>

При создании проекта Wix внутри файла Product.wxs сразу после тега <Product> у вас уже будет шаблон, обозначенный тегами <Fragment>  — замените его на код указанный выше. По сути, несмотря на то, что теги являются вложенными и кажется, что при установке будет создана иерархическая структура, фактически все файлы будут установлены в папку, которая будет выбрана пользователем во время установки, т.к. property WIXUI_INSTALDIR (как было описано выше, с помощью этого свойства шаблону UI передается виртуальный путь) содержит ссылку на виртуальную директорию INSTALLFODER, которая является корнем для нашего проекта.

Что касается тега Fragment, то с помощью него достигается структурирование проекта. Раздел, помещенный внутрь тега Fragment, может быть перемещен в отдельный файл или расположен практически в любом месте файла. Иначе, пришлось бы все инструкции для создания инсталлятора помещать внутрь тега Product.

Конечный вариант файла Product.wxs

<?xml version="1.0" encoding="UTF-8"?>
<Wix xmlns="http://schemas.microsoft.com/wix/2006/wi">
	<Product Id="*" Name="InstallerForBlazorApp" Language="1033" Version="1.0.0.0" Manufacturer="Developer" UpgradeCode="543f9f1d-2c37-403d-930c-f0eb8bf401ec">
		<Package InstallerVersion="500" Compressed="yes" InstallScope="perMachine" Platform="x64"/>

		<MajorUpgrade DowngradeErrorMessage="A newer version of [ProductName] is already installed." />

    <Media Id="1"
           Cabinet="media.cab"
           EmbedCab="yes"
           DiskPrompt="CD-ROM #1" />
    <Property Id="DiskPrompt"
              Value="InstallerForBlazorApp CD-ROM #1" />


    <Property Id="WIXUI_INSTALLDIR" Value="INSTALLFOLDER" ></Property>
    <UIRef Id="WixUI_InstallDir"/>

    <Feature Id="BlazorAppFeature"
             Title="BlazorWasmApplication"
             Level="1"
             ConfigurableDirectory="INSTALLFOLDER"
             AllowAdvertise="no"
             Absent='disallow'>
      <ComponentGroupRef Id="BlazorAppIisConfiguration" />
      <ComponentGroupRef Id="PublishedComponents" />
    </Feature>
	</Product>

	<Fragment>
		<Directory Id="TARGETDIR" Name="SourceDir">
			<Directory Id="ProgramFilesFolder">
				<Directory Id="INSTALLFOLDER" Name="InstallerForBlazorApp" />
			</Directory>
		</Directory>
	</Fragment>

</Wix>

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

<Fragment>
	<ComponentGroup Id="ProductComponents" Directory="INSTALLFOLDER">
      		<ComponentGroupRef Id="PublishedComponents"/>
	</ComponentGroup>
</Fragment>

Для лаконичности .xml-описания в нашем случае можно отказаться от создания еще одной группы компонентов внутри файла Product.wxs и добавить ссылку на существующую группу в Feature— см. 26 строку файла Product.wxs.

После того, как все необходимые .xml документы будут созданы, давайте соберем проект: правая кнопка мыши по проекту wix -> build. После сборки из папки проекта перейдем по следующему пути: ~InstallerForBlazorAppbinRelease (или Debug — в зависимости от выбранной вами конфигурации сборки проекта в Visual Studio) – в нем лежит собранный инсталлятор InstallerForBlazorApp.msi. Запускаем его:

Принимаем лицензию (так как мы не передавали файл лицензии, то имеем Lorem impsum…)

Далее мы имеем возможность выбрать директорию, в которую будет произведена установка продукта (по умолчанию, Program Files (x86))

Next, next, install.

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

Убедиться в этом вы можете сами, перейдя в директорию установки. Однако, это еще не говорит о том, что все прошло по плану. Откройте IIS -> Application Pool. Там должен появится созданный нами новый пул приложений

А в папке сайтов появится новый BlazorAppWasm

Нажимаем на Browse: http://127.0.0.1:8085/ и в браузере открывается страница установленного проекта, после чего установку можно считать успешной.

Удалить приложение вы можете или через установку и удаление программ, или непосредственно через инсталлятор путем его повторного запуска. При этом, будет произведено не только удаление файлов, но и пула с сайтом из IIS.

Таким образом, можно резюмировать, что технология Wix позволяет относительно быстро описать и собрать инсталлятор (который позволяет произвести выбор директории установки) для достаточно большого проекта – главное знать какие теги и в каком порядке использовать.

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

Только зарегистрированные пользователи могут участвовать в опросе. Войдите, пожалуйста.

Продолжать писать про Wix toolset?


25.58%
Я томат — любому варианту рад
11

Проголосовали 43 пользователя.

Воздержался 1 пользователь.

Понравилась статья? Поделить с друзьями:
  • Witcher 3 msvcr120 dll windows 10
  • Witcher 3 msvcp120 dll windows 10
  • Witcher 2 не запускается на windows 10 ничего не происходит
  • Witcher 1 не запускается на windows 10 x64
  • Witch they have from their windows and pose a far