Ошибка компиляции - ICE80: 64BitComponent ... использует 32BitDirectory - PullRequest
21 голосов
/ 18 декабря 2009

Следующая строка

<Component Guid='{THE_GUID}' Id='GlobalScopePackages' >

Генерирует следующую ошибку:

Error   4   ICE80: This 64BitComponent GlobalScopePackages uses 32BitDirectory blablabla    c:\development\...\file.wxs

Ошибка описана на этой странице http://msdn.microsoft.com/en-us/library/aa369034(VS.85).aspx

Как мне это исправить или подавить предупреждение? Безопасно ли просто подавить предупреждение?

Ответы [ 6 ]

52 голосов
/ 24 апреля 2013

Мне нужен 64-разрядный установщик (в соответствии с моей конфигурацией выпуска), поэтому я использовал <Directory Id="ProgramFiles64Folder"> вместо ProgramFilesFolder в качестве части целевого пути установки.

В этой статье содержится дополнительная информация: Как: создать пакет установщика Windows для 64-разрядных клиентских компьютеров

15 голосов
/ 10 января 2011

Вы также можете установить Win64="no" в теге <Component /> компонентов, которые не являются 64-битными.

Но я могу подтвердить, что вы можете игнорировать это.

4 голосов
/ 30 апреля 2010

Безопасно просто подавить предупреждение.

1 голос
/ 27 июля 2016

Если кто-то пытается автоматизировать процесс создания «компонента» с помощью HEAT, нет доступных переключателей (до V3.10) для включения Win64 = да / нет.

Использование -arch x64 с Candle решит эту проблему.

1 голос
/ 24 ноября 2014

Сегодня я получил эту ошибку и обнаружил, что проект установщика был настроен для сборки x64. Все остальные проекты были Any CPU. Я хотел только установщик x86, поэтому просто изменив платформу на x86, я решил эту проблему.

Очевидно, что если вам нужен установщик на основе x64, то один из приведенных выше ответов решит вашу проблему.

0 голосов
/ 02 мая 2019

Я хотел иметь возможность собрать мой установщик как для x86, так и для x64 в зависимости от переданных аргументов сборки. Я смог сделать это следующим образом.

См. сообщение в блоге Алек Дэвис для получения дополнительной информации.

Простой пример в файле .wxs

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

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

<Fragment>
    <ComponentGroup Id="ProductComponents" Directory="INSTALLFOLDER">
        <!-- TODO: Remove the comments around this Component element and the ComponentRef below in order to add resources to this installer. -->
        <Component Id="ProductComponent"
             Win64="$(var.Win64)">

    <File Source="$(var.X.TargetPath)" />
    <!-- TODO: Insert files, registry keys, and other resources here. -->
        </Component>
    </ComponentGroup>
</Fragment>
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...