XNA Framework и статическая сборка

Существует такой конкурс студенческих проектов - Цифровой Ветер, баннер которого размещен справа. Требования конкурса довольно странные, если не сказать абсурдные. Необходимо чтобы работа, представленная в раздел "Казуальные игры для компьютеров" не требовала установки себя и дополнительных библиотек.

Но мой проект написан и использованием XNA Framework и требует установки специального runtime. Что же делать в такой ситуации?

Для начала нам нужны dll файлы XNA Framework. Пользовательский рантайм можно скачать с сайта Microsoft. После скачки распаковываем инсталятор любым архиватором и получаем следующую структуру папок:

Распакуем содержимое архива product.cab и видим:

Выделенные файлы - необходимый минимум для запуска игры, если нет возможности установить весь runtime то можно положить эти файлы в каталог с игрой.

Теперь, когда все необходимые файлы собраны можно приступать к упаковке. Для того чтобы собрать все dll воедино воспользуемся материалом предыдущей статьи - Статическая сборка в .NET.

Но что делать с ненавистной папкой Content в которой хранятся сконвертированные в специальный формат текстуры игры? Можно воспользоваться утилитой NBox из предыдущей статьи. Напомню что она позволяет упаковывать в единый .exe файлы, необходимо только правильно написать конфигурационный файл. Так же утилита ужимает конечную сборку через 7zip. При запуске программы все внешние файлы распаковываются в каталог с программой. Чем то напоминает инсталятор или самораспаковывающийся архив, правда? Но пользователь не видит лишних окон и вопросов о том куда распаковывать а значит требование соблюдено - единственный .exe файл.

Наиболее правильный вариант - использование технологии ClickOnce для установки приложений, но из-за ограничений конкурса воспользоваться ей не удалось.