Распространяемые коды выхода для сред выполнения конечных пользователей DirectX

Может ли кто-нибудь указать мне список кодов выхода для среды выполнения DirectX для конечных пользователей (в частности, версии от июня 2010 г., если это имеет значение)? Заранее извиняюсь, если это простой вопрос (так и должно быть), но, видимо, мои навыки работы с Google не на высоте, поскольку я не смог их найти.

Для бонусных баллов:

Я пытаюсь использовать InstallShield LE для создания установщика для игры, над которой я работаю. Я загрузил распространяемый компонент DirectX для конечного пользователя (июнь 2010 г.). В этом распространяемом компоненте пользователь устанавливает/извлекает файлы DX в указанное им место, ожидая, что пользователь затем вручную запустит DXSETUP.exe, извлеченный в это место. Я обрабатываю это автоматически в пользовательском действии с указанным местоположением (с намерением очистить эти файлы в более позднем пользовательском действии).

Отсюда я хотел бы запустить DXSETUP.exe из указанного места и соответствующим образом реагировать на любые возникающие ошибки (отображать сообщение для пользователя, которое поможет ему решить его конкретную проблему). В настоящее время я использую исполняемый файл C#, который я создал для запуска DXSETUP.exe, который запускается из ISLE с помощью специального действия. Поскольку я не смог найти список возможных кодов выхода для DXSETUP.exe, я решил отображать общее сообщение всякий раз, когда встречается ненулевой (неудачный) код выхода, который будет содержать код выхода, возвращаемый DXSETUP.exe. В обычной ситуации я бы остановился и подождал, пока пользователи не начнут связываться со мной с кодами ошибок, но эта настройка не распространяется на очень конкретный случай.

По-видимому, если пользователь отменяет DXSETUP.exe, он возвращает код выхода 0, что должно указывать на успех. Я не знаю, как обнаружить/справиться с этим обстоятельством. Как есть, установщик моей игры будет продолжать успешно работать, и пользователь не сможет играть в игру после завершения установщика из-за отсутствия файлов DX.

Прошу прощения, если это получилось немного многословно, но, надеюсь, это ясно и адекватно объясняет мою ситуацию.


person Patrick    schedule 01.08.2014    source источник


Ответы (1)


Не давайте пользователю возможность отменить, запустив dxsetup.exe с флагом /silent. Это рекомендуется в качестве лучшей практики. от Майкрософт.

person Ross Ridge    schedule 01.08.2014
comment
Обязательно прочитайте раздел «маленькие установочные пакеты». Вы почти гарантированно не нуждаетесь в большинстве этих CAB-файлов для своего приложения. Также обязательно прочитайте эту статья, чтобы убедиться, что вам действительно нужна эта вещь. - person Chuck Walbourn; 01.08.2014
comment
Обратите внимание, что тот, который вы загрузили с сайта MSDN, немного новее, чем тот, который входит в состав DirectX SDK (июнь 2010 г.). Подробности здесь и здесь - person Chuck Walbourn; 01.08.2014
comment
@Росс Я заметил эту рекомендацию в статье, на которую вы ссылаетесь. Поскольку моя компания в настоящее время не имеет какого-либо юридического соглашения для привязки DX EULA (мы все еще находимся на ранней стадии разработки), однако я надеялся просто запустить распространяемый компонент в обычном режиме, т.е. использовать приглашение, предоставленное Microsoft, для обработайте принятие/непринятие пользователем DX EULA, прежде чем продолжить установку. Я просто не понимаю, почему отклонение приглашения EULA приводит к тому, что распространяемый компонент возвращает успешный код выхода. - person Patrick; 02.08.2014
comment
@Ross Кроме того, что касается точки Microsoft, связывающей DX EULA с юридическими соглашениями игры, я не видел никаких упоминаний о том, как это должно быть выполнено. Я не вижу RTF, TXT или других подобных файлов, содержащих лицензионное соглашение. Должен ли я поверить, что от меня ожидают, что я просто запущу распространяемый пакет, дождусь приглашения EULA, а затем скопирую соглашение из этого приглашения? Если это так, то зачем Microsoft заставлять нас/меня преодолевать дополнительные трудности? Могу ли я быть неразумным, думая, что весь этот процесс становится более сложным, чем это действительно необходимо? - person Patrick; 02.08.2014
comment
@Chuck Я прочитал этот раздел, хотя пока отклонил его как случай преждевременной оптимизации. На данный момент наш установщик всего на 10 МБ больше, чем сам полный распространяемый пакет среды выполнения DX, что составляет всего 105 МБ. Конечно, чем меньше, тем лучше, но я планирую побеспокоиться об этом в другой раз. - person Patrick; 02.08.2014
comment
@ChuckWalbourn - человек, который может ответить на этот вопрос лучше всего, но я не верю, что лицензионное соглашение DirectX SDK от июня 2010 г., которое разрешает вам распространять среду выполнения DirectX, требует, чтобы вы отображали лицензионное соглашение с конечным пользователем DirectX. Вместо этого требуется, чтобы вы требовали, чтобы дистрибьюторы и внешние конечные пользователи согласились с условиями, защищающими его как минимум в той же степени, что и настоящее соглашение. Это проблема только в том случае, если вы разрешаете внешним пользователям делать неограниченные копии приложения. Если у вас открытый исходный код, общественное достояние или GPL, вам вообще не разрешено включать повторную рассылку. - person Ross Ridge; 02.08.2014
comment
@Chuck Нам определенно нужны среды выполнения, поскольку мы используем dinput, xaudio и т. Д., В результате чего во время выполнения появляются сообщения об отсутствии связанных файлов, если я не включаю распространяемый компонент. Однако я планирую исключить CAB-файлы, которые нам не нужны, как вы предложили, позднее. Спасибо за ссылки и предложение. - person Patrick; 02.08.2014
comment
Он не устанавливает DirectInput ни в одной современной версии Windows. Вы проверяете только Windows XP SP2 или более позднюю версию, и у вас есть DirectX 9.0c или более поздняя версия. Для XInput вместо него можно использовать XInput 9.1.0, который уже является частью ОС Windows Vista — Windows 8.x. Вам это нужно для XAudio для поддержки нижнего уровня и, возможно, устаревшего D3DX. Это, вероятно, составляет всего 3-5 МБ, а не 105 МБ :) - person Chuck Walbourn; 02.08.2014
comment
В какой-то момент у нас были текстовые файлы EULA, которые вы показывали конечному пользователю как их собственную загрузку, но вы также могли написать быструю утилиту для извлечения их из API DirectSetup для локализованных версий. В противном случае английская версия находится в DirectX SDK в папке C:\Program Files (x86)\Microsoft DirectX SDK (июнь 2010 г.)\Documentation\License Agreements\DirectX End User EULA.txt. - person Chuck Walbourn; 02.08.2014
comment
Что касается лицензионного соглашения, вы, как разработчик, должны соблюдать его для использования API DirectSetup, которое находится в C:\Program Files (x86)\Microsoft DirectX SDK (июнь 2010 г.)\Documentation\License Agreements\DirectX SDK EULA.txt/.rtf. - person Chuck Walbourn; 02.08.2014
comment
Интересный. Спасибо за всю информацию вам обоим. Я полагаю, что я буду работать над сокращением количества включенных файлов раньше, чем позже. Каковы ваши рекомендации, если они у вас есть, относительно реагирования на определенные неудачные коды выхода? - person Patrick; 02.08.2014