Я хочу создать переносную версию программы для Windows 8, для которой требуется правильная работа VCRedist 2010 и DirectX 10. Однако я не могу использовать установщики, потому что они пытаются установить по системному пути, и, хотя компьютер, на котором я работаю, имеет права администратора, у меня его нет на компьютерах, на которые я буду его переносить. После долгих исследований кажется, что я могу включить файлы DLL VCRedist 2010 и DirectX 10 в папку приложения, но мне не удалось найти список всех необходимых библиотек. Если это правда, может ли кто-нибудь предоставить мне их список, и если это не так, знает ли кто-нибудь альтернативный способ сделать это?
Системная информация: 32-битная ОС, Windows 8
Первое, что нужно сказать, это то, что вы никогда не распространяете DirectX. Он является частью операционной системы и может быть обновлен только с помощью пакета обновления, обновления ОС или Центра обновления Windows. Это было правдой после Windows XP Service Pack 2, но это плохо понимаемый факт.
Пакеты среды выполнения DirectX для конечного пользователя DXSETUP а также DXWSETUP) никогда не устанавливает какую-либо версию DirectX на любую версию операционной системы! Это было правдой уже более десяти лет.
Если ваше приложение использует один из дополнительных компонентов, поставляемых в устаревшем DirectX SDK, таких как D3DX9, D3DX10, D3DX11, D3DCompile # 43, XAudio 2.7, XInput 1.3 или XACT, то вы должны использовать устаревшую версию Пакет DirectSetup для перераспределения этих библиотек DLL, поскольку они никогда не являются частью операционной системы. Использование DirectSetup всегда требует прав администратора.
Увидеть Не так DirectSetup для более полного объяснения.
Для стандартного пользовательского приложения Windows 8 лучшим вариантом является использование DirectX 11 и использование одного из множества замены с открытым исходным кодом для функциональности D3DX. Если вам нужен XAudio, вы можете использовать XAudio 2.8. Если вы используете D3DCompile, вы можете включить его вместе с приложением из Windows 8 SDK. Если вы используете XInput, вы можете использовать XInput 1.4 или более старый XInput 9.1.0.
Обратите внимание, что Windows 8.0 в настоящее время заканчивается. Хотя эти пользователи по-прежнему поддерживаются в качестве цели для Visual Studio 2015, ожидается, что эти пользователи будут обновлены до Windows 8.1 или Windows 10 для поддержки. В Windows 8.1 библиотека D3DCompile # 47 уже является частью операционной системы.
Библиотеки DLL Visual C ++ 2010, 2012, 2013 и 2015 могут быть включены бок о бок (иначе локальное развертывание приложения). Вы можете использовать Windows 8.1 SDK с VS 2010, используя реквизит файлы, но я бы порекомендовал перейти на более новую версию Visual Studio, которая может более легко использовать содержимое Windows 8.1 SDK.
Другой вариант здесь — использовать VS 2013, использовать Windows 8 Store и использовать его для обработки всего развертывания, которое не требует прав администратора. Вы по-прежнему должны использовать Direct3D 11 и избегать любого использования устаревших компонентов DirectX SDK, включая D3DX9 / D3DX10 / D3DX11.
Увидеть Где находится DirectX SDK?.
Других решений пока нет …