Мое решение построено с настройкой платформы "Любой процессор". Для моих WiX настроек проекта установщика 3.6 кажется, что я не могу установить целевую платформу на "x64"; доступен только "x86". Можно ли создать проект WiX с таргетингом на x64?
Настроить целевой проект WiX 3.6 x64?
Ответ 1
Установщики Windows не могут быть сконструированы для таргетинга на любой ЦП, я обычно строю дважды, при этом управляемый код устанавливается в Any CPU, в то время как установщик имеет две конфигурации x86 и x64.
Вы можете обнаружить, что вам нужно создать конфигурации, это можно сделать, щелкнув правой кнопкой мыши на решении и выбрав диспетчер конфигурации, а затем выберите раскрывающееся меню. Когда вы закончите, вы сможете увидеть следующее в вашем 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>
Чтобы позволить установщику работать с x86 и x64, определите переменные для обнаружения и установки архитектуры установки.
<?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 ?>
Я добавляю переменную bitness
в имя как визуальный ключ:
<Product Name="My Install $(var.bitness)"
Обратитесь к папке Program Files:
<Fragment>
<Directory Id="TARGETDIR" Name="SourceDir">
<Directory Id="$(var.PlatformProgramFilesFolder)">
Компоненты имеют установленный флаг Win64:
<Component Win64="$(var.Win64)"