Форум программистов «Весельчак У»
  *
Добро пожаловать, Гость. Пожалуйста, войдите или зарегистрируйтесь.
Вам не пришло письмо с кодом активации?

  • Рекомендуем проверить настройки временной зоны в вашем профиле (страница "Внешний вид форума", пункт "Часовой пояс:").
  • У нас больше нет рассылок. Если вам приходят письма от наших бывших рассылок mail.ru и subscribe.ru, то знайте, что это не мы рассылаем.
   Начало  
Наши сайты
Помощь Поиск Календарь Почта Войти Регистрация  
 
Страниц: [1]   Вниз
  Печать  
Автор Тема: WIX Установка для двух платформ (x64 x86) одновременно  (Прочитано 5120 раз)
0 Пользователей и 1 Гость смотрят эту тему.
dark_rain
Помогающий

ua
Offline Offline
Пол: Мужской

« : 11-11-2011 13:24 » 

Заранее прошу извинений если запостил не туда, перенесите, если это необходимо.

Итак, суть проблемы следующая:

Имеется скрипт установки, который в зависимости от платформы должен копировать бинарники в ProgramFiles.

Код: (XML)
<?xml version="1.0" encoding="UTF-8"?>
<Wix xmlns="http://schemas.microsoft.com/wix/2006/wi">
        <Product Id="53cee088-54b8-483d-92ee-b9e8bbaf4c5a" Name="Project" Language="1033" Version="1.0.0.0" Manufacturer="Me" UpgradeCode="776190bb-a78f-4cd5-91ea-39903aac20e2">
                <Package InstallerVersion="200" Compressed="yes" Description="Pro" Manufacturer="Me" Comments="blabla" Platform="x64"/>

                <Media Id="1" Cabinet="data.cab" EmbedCab="yes" />

                        <!-- Virtual directory-->
                <Directory Id="TARGETDIR" Name="SourceDir">
                                <!-- Subdir Program Files\Myproj for x86-->
                        <Directory Id="ProgramFilesFolder">
                                <Directory Id="INSTALLLOCATION" Name="Myproj" />
                        </Directory>
                                <!-- Subdir Program Files\Myproj for x64-->
                        <Directory Id="ProgramFiles64Folder">
                                <Directory Id="INSTALLLOCATION64" Name="Myproj" />
                        </Directory>
                                <!-- Subdir Start\Programs\Myproj -->
                        <Directory Id="ProgramMenuFolder" Name="Programs">
                                <Directory Id="ProgramMenuDir" Name="Myproj" />
                        </Directory>
                                <!-- Desktop -->
                        <Directory Id="DesktopFolder" Name="Desktop" />
                </Directory>

                <!-- Elements in folder with program x86-->
                <DirectoryRef Id="INSTALLLOCATION">
                        <Component Id="MainExecutible86" Guid="C57C4CDD-3923-48e3-8532-B8383B97DC6F">
                                        <File Id="MyprojExe86" Name="Myproj.exe" Source="D:\Projects\Me\bin\Debug\Win32\Myproj.exe" DiskId="1" KeyPath="yes">
                                                <!-- Shortcuts for launch program-->
                                                <Shortcut Id="DesktopShortcut86" Name="Myproj" Description="Desctop Shortcut" WorkingDirectory="INSTALLLOCATION" Directory="DesktopFolder" Advertise="yes" Icon="MyprojIcon.exe"></Shortcut>
                                                <Shortcut Id="ProgramsMenuShortcut86" Name="Myproj" Description="The best" WorkingDirectory="INSTALLLOCATION" Directory="ProgramMenuDir" Advertise="yes" Icon="MyprojIcon.exe"></Shortcut>
                                        </File>
                        </Component>
                </DirectoryRef>

                <!-- Elements in folder with program x64-->
                <DirectoryRef Id="INSTALLLOCATION64">
                        <Component Id="MainExecutible64" Guid="7F4365BE-C98E-473c-A299-2D5F9EAADE79">
                                <Condition>VersionNT64</Condition>
                                        <File Id="MyprojExe64" Name="Myproj.exe" Source="D:\Projects\Me\bin\Debug\Win32\Myproj.exe" DiskId="1" KeyPath="yes">
                                                <!-- Shortcuts for launch program-->
                                                <Shortcut Id="DesktopShortcut64" Name="Myproj" Description="Desctop Shortcut" WorkingDirectory="INSTALLLOCATION64" Directory="DesktopFolder" Advertise="yes" Icon="Myproj.exe"></Shortcut>
                                                <Shortcut Id="ProgramsMenuShortcut64" Name="Myproj" Description="The best" WorkingDirectory="INSTALLLOCATION64" Directory="ProgramMenuDir" Advertise="yes" Icon="MyprojIcon.exe"></Shortcut>
                                        </File>
                        </Component>
                </DirectoryRef>

                <DirectoryRef Id="ProgramMenuDir">
                        <Component Id="ProgramMenuDir" Guid="5DBA90BB-4E2D-404b-B334-92FA721E7BFC">
                                <Shortcut Id="UninstallMyproj" Name="Uninstall the Myproj" Target="[System64Folder]msiexec.exe" Arguments="/x [ProductCode]" Description="Uninstall Myproj"></Shortcut>
                                <RemoveFolder Id="ProgramMenuDir" On="uninstall" />
                                <RegistryValue Root="HKCU" Key="Sofware\[Manufacturer]\[ProductName]" Type="string" Value="" KeyPath="yes" />
                        </Component>
                </DirectoryRef>

                                <!--Features x86-->
                        <Feature Id="ProductFeature86" Title="Myproj Installer" Description="Install Myproj" Display="expand" Level="1" ConfigurableDirectory="INSTALLLOCATION" AllowAdvertise="no" Absent="disallow" InstallDefault="local">
                                <Condition Level="0"><![CDATA[Not VersionNT64]]></Condition>
                                <Feature Id="RequiredComponents86" Title="Required Components" Description="This components need for correctly program work" Level="1" AllowAdvertise="no" Absent="disallow" InstallDefault="local">
                                        <ComponentRef Id="MainExecutible86" />
                                        <ComponentRef Id="ProgramMenuDir" />
                                </Feature>
                        </Feature>

                        <!--Features x64-->
                <Feature Id="ProductFeature64" Title="Myproj Installer" Description="Install Myproj" Display="expand" Level="1" ConfigurableDirectory="INSTALLLOCATION64" AllowAdvertise="no" Absent="disallow" InstallDefault="local">
                        <Condition Level="0"><![CDATA[VersionNT64]]></Condition>
                        <Feature Id="RequiredComponents64" Title="Required Components" Description="This components need for correctly program work" Level="1" AllowAdvertise="no" Absent="disallow" InstallDefault="local">
                                <ComponentRef Id="MainExecutible64" />
                                <ComponentRef Id="ProgramMenuDir" />
                        </Feature>
                </Feature>

Вся проблема в том, что если не указывать параметр Platform="x64", не будут работать фичи для х64 ОС, а если указывать, то получается, что на х32 не поставить. Как выйти из положения?

P.S. Знаю - делать две инсталляции, но для меня это не вариант. 
Записан
Страниц: [1]   Вверх
  Печать  
 

Powered by SMF 1.1.21 | SMF © 2015, Simple Machines