Я хочу использовать AppVeyor создать приложение для Windows. Компилятор GNAT GPL 2016 (Ada) для Windows x86.
Я получаю следующее сообщение:
Не удалось запустить программу gnat-gpl-2016-x86-windows-bin.exe: указанный исполняемый файл не является допустимым приложением для этой платформы ОС.
Вопросы:
DataExecutionPrevention_32BitApplications : True
значит?Get-CimInstance Win32_OperatingSystem | FL *
распечатывает (сокращенно):
Status : OK
Name : Microsoft Windows Server 2012 R2 Datacenter|C:\windows|\Device\Harddisk0\Partition5
Caption : Microsoft Windows Server 2012 R2 Datacenter
InstallDate : 3/9/2016 2:16:51 AM
CreationClassName : Win32_OperatingSystem
CSCreationClassName : Win32_ComputerSystem
CSName : APPVYR-WIN
LastBootUpTime : 10/21/2016 1:10:27 AM
LocalDateTime : 10/21/2016 1:11:59 AM
OSType : 18
Version : 6.3.9600
BootDevice : \Device\HarddiskVolume3
BuildNumber : 9600
BuildType : Multiprocessor Free
DataExecutionPrevention_32BitApplications : True
DataExecutionPrevention_Available : True
DataExecutionPrevention_Drivers : True
DataExecutionPrevention_SupportPolicy : 3
Debug : False
EncryptionLevel : 256
OSArchitecture : 64-bit
OSLanguage : 1033
OSProductSuite : 400
RegisteredUser : Windows User
SystemDevice : \Device\HarddiskVolume5
SystemDirectory : C:\windows\system32
SystemDrive : C:
WindowsDirectory : C:\windows
Этот вопрос был перемещен из StackOverflow в ServerFault.
Windows Server 2012 R2 Datacenter (64-разрядная версия) не поддерживает 32-разрядную версию?
Редактировать:
Это выглядит как DataExecutionPrevention_32BitApplications
мешает мне запустить установщик. Как запустить установщик в 32-битном режиме совместимости из PowerShell? У меня нет графического интерфейса для выбора такой опции.
Server 2012 R2 недоступен в 32-битной версии ОС (для всех версий), но они могут запускать 32-битные приложения, как и все другие 64-битные ОС Windows, и WOW64 присутствует, поэтому я не думаю, что это проблема. Разве вы не один из немногих, кто работает на процессоре Itanium?
DataExecutionPrevention_32BitApplications: True означает, что предотвращение выполнения данных включено для 32-битных приложений. DEP - это встроенный в ОС процесс, который проверяет память, чтобы предотвратить запуск вредоносного кода. Известно, что DEP вызывает проблемы со старыми приложениями, поэтому у вас есть возможность отключить его либо для всего, кроме критических систем, либо для определенных приложений.
Windows Server 2012 R2 поддерживает приложение модели x86, но, с другой стороны, необходимая зависимость для вашего .exe, безусловно, не установлена. (например, vcruntime x86 и т. д.)
Я видел ваш комментарий к другому потоку, что .exe вызывается из PowerShell, пожалуйста, используйте консоль PowerShell x86 для такой задачи.
% SystemRoot% \ syswow64 \ WindowsPowerShell \ v1.0 \ powershell.exe