Подтвердить что ты не робот

Ошибка компиляции - ICE80: 64BitComponent... использует 32BitDirectory

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

<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

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

4b9b3361

Ответ 1

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

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

Ответ 2

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

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

Ответ 3

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

Ответ 4

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

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

Ответ 5

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

Использовать переключатель -arch x64 со свечой разрешит эту проблему.

Ответ 6

Я хотел иметь возможность собрать мой установщик для 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>