#wix #registry
#wix #реестр
Вопрос:
Я использую WiX для развертывания своего приложения. Это приложение использует раздел реестра, который является общим для процессов x64 и x86. Таким образом, он не должен использовать Wow64Node. Для достижения этой цели приложение использует флаг KEY_WOW64_64KEY.
Но как это можно сделать, используя сборку MSI с WiX? В настоящее время я использую установочные версии x86 и x64, но это приводит к большим накладным расходам. Возможно ли отключить перенаправление реестра в WiX? Я нашел атрибут DisableRegistryReflection, но, похоже, это не влияет на перенаправление. Другой идеей было бы объединить два установщика в один файл, как это возможно с языками. Но я имею в виду, что это не поддерживается.
Ответ №1:
Это можно было бы сделать с помощью унифицированного 32/64-разрядного пакета, но WiX его не поддерживает. Некоторые коммерческие средства разработки настроек поддерживают это.
При использовании отдельных пакетов 32-разрядные установщики будут использовать 32-разрядное расположение в 64-разрядных системах. Итак, чтобы избежать перенаправления реестра, вам следует распространить 32-разрядный пакет для 32-разрядных систем и 64-разрядный пакет для 64-разрядных систем.
В 64-разрядных установщиках компонент записи реестра должен быть помечен как 64-разрядный. В WiX вы можете сделать это, установив для Win64 значение «да» для компонентов вашего реестра.
Комментарии:
1. Это установщик Windows, который не поддерживает «унифицированные» пакеты.
2. Да, MSI в этот раз сильно промахнулась.
3. Вот как я это делаю сейчас. Это единственное решение?
4. Если вы посмотрите на установочные пакеты SQL Express 2008 , то увидите три разных типа: x86, x64 и комбинированные. С небольшими накладными расходами для объединенного пакета. Вы знаете, как они это делают? Я предполагаю, что именно загрузчик решает, какую версию использовать, но как они минимизируют размер пакета?
5. Обычным подходом является загрузчик EXE, который использует некоторые преобразования (MST-файлы) для динамического изменения MSI на основе 32-разрядной или 64-разрядной целевой платформы. Это используется большинством инструментов разработки программы установки, которые генерируют для вас унифицированный установщик.