2013-09-05 16 views
10

Moje rozwiązanie zostało zbudowane z ustawieniem platformy "Any CPU". W przypadku moich ustawień projektu instalatora, wygląda na to, że nie mogę ustawić docelowej platformy na "x64"; dostępne jest tylko "x86". Czy projekt WiX może być zbudowany z myślą o x64?Zbuduj projekt WiX 3.6 na x64?

Odpowiedz

21

Instalatorów Windows nie można zbudować w celu kierowania na dowolny procesor, zwykle buduję dwa razy, przy czym kod zarządzany jest ustawiony na Dowolny procesor, podczas gdy instalator ma dwie konfiguracje x86 i x64.

Może zajść potrzeba utworzenia konfiguracji, można to zrobić, klikając prawym przyciskiem myszy na rozwiązanie i wybierając menedżera konfiguracji, a następnie wybierając rozwijane pod platformą. Kiedy jesteś pełna powinieneś być w stanie zobaczyć następująco określonej w wixproj:

<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> 
    <PropertyGroup Condition=" '$(Configuration)|$(Platform)' == 'Debug|x64' "> 
    <DefineConstants>Debug</DefineConstants> 
    <OutputPath>bin\$(Platform)\$(Configuration)\</OutputPath> 
    <IntermediateOutputPath>obj\$(Platform)\$(Configuration)\</IntermediateOutputPath> 
    </PropertyGroup> 
    <PropertyGroup Condition=" '$(Configuration)|$(Platform)' == 'Release|x64' "> 
    <OutputPath>bin\$(Platform)\$(Configuration)\</OutputPath> 
    <IntermediateOutputPath>obj\$(Platform)\$(Configuration)\</IntermediateOutputPath> 
    </PropertyGroup> 

Aby umożliwić instalatorowi pracować zarówno x86 i x64 definiować zmienne w celu wykrycia i ustawić architekturę instalacji.

<?if $(var.Platform) = x64 ?> 
<?define bitness = "(64 bit)" ?> 
<?define Win64 = "yes" ?> 
<?define PlatformProgramFilesFolder = "ProgramFiles64Folder" ?> 
<?else ?> 
<?define bitness = "(32 bit)" ?> 
<?define Win64 = "no" ?> 
<?define PlatformProgramFilesFolder = "ProgramFilesFolder" ?> 
<?endif ?> 

mogę dołączyć bitness zmienną do nazwy jako wizualną wskazówkę:

<Product Name="My Install $(var.bitness)" 

Patrz Program Files Folder odpowiednio:

<Fragment> 
    <Directory Id="TARGETDIR" Name="SourceDir"> 
     <Directory Id="$(var.PlatformProgramFilesFolder)"> 

komponenty flaga Win64 ustawić odpowiednio:

<Component Win64="$(var.Win64)" 
+0

Witaj, Davidzie, dziękuję, czy to oznacza, że ​​muszę zbudować dwa oddzielne MSI dla x86 i x64? – sean717

+0

@ sean717 Tak, chociaż można umieścić oba w bootstrapped exe. Ale to jest inne pytanie :-) –

+0

@ DavidDartin Próbuję zastosować twoje rozwiązanie, ale nie jestem pewien, gdzie powinienem umieścić fragment kodu, w którym definiujesz zmienne do wykrywania i ustawiasz architekturę instalacji. ¿W jakim pliku mam to umieścić? – daniegarcia254

Powiązane problemy