было бы неплохо, если бы вы подтвердили ваши слова выдержкой из лицензионного соглашения
Давайте только не будете пытаться пиписками меряться, ок?

Нате пожалуйста:
http://www.gotdotnet.ru/blogs/msdn/6366/Редистрибуция .NET Framework
Чтобы распространять Dotnetfx.exe со своим приложением, вам потребуется правильно лицензированная копия Microsoft .NET Framework SDK. Кроме того, вам нужно будет подтвердить свое согласие с тем, что любое использование или распространение Dotnetfx.exe с вашим лицензированным продуктом (Licensed Product), как он определен в лицензионном соглашении конечного пользователя Microsoft .NET Framework SDK ("EULA"), осуществляется согласно правилам EULA. Если у вас нет правильно лицензированной копии Microsoft .NET Framework SDK или вы не согласны с условиями EULA, вы не имеете права распространять Dotnetfx.exe и можете применять его согласно правилам лицензионного соглашения конечного пользователя, содержащимся в Dotnetredist.exe.SDK ставится с Вижуал Студией. У вас вижуал студия лицензионная, или кастрированная express edition? Лично у меня - не express edition. А также, гарантируете ли вы, что пользователь инсталлирует через инсталлятор инсталлятор фреймворка под правами админа (см. ниже - для ClickOnce это неважно)
Вообще я вам уже предложил решение проблемы
Спасибо, но проблемы никакой нет, поскольку это - ClickOnce инсталляция, то есть инсталлятор _САМ_ поставит нужные библиотеки, если в системе они отсутствуют. Нужно только не отключать инет во время инсталлирования. Исключение - затык на XP, где нужно руками поставить xna framework redistributable.
Если же даже и включить в инсталляцию отдельный распространяемый фреймворк.
Вот вам ссылка в тему о ClickOnce:
http://www.sql.ru/Forum/actualthread.aspx?bid=34&tid=661072&hl=Ну и насчет статьи: как я говорил, решение с двойным буфером - это асинхронное рисование. Вы можете сказать, в каком потоке будет вызываться OnPaint - в потоке компонента, т.е. синхронно, или в отдельном, мысль понятна? Свойство DoubleBuffered то немного не то

Я лично не могу. И никто не может, потому что это определяет CLR, в каком потоке будет "жить" визуальный компонент - в потоке родителя, или в отдельном. Потому что он реализует интерфейс IInvokable (как то так называется - можете по метаданным посмотреть). Свойство надо его читать InvokeRequired. Может да, а может нет. А городить свой отдельный new Thread, чтоб отрисовать контрол для игры - это гемор в плане расходования ресурсов (это каждого "жука" из игры загнать в отдельный поток

При этом еще городить блокировки, а где-то провтыкать - может случиться дедлок, потому что они взаимодействуют по модели игры). Оно можно хоть на асме писать под вин, только есть уже специализированные движки, которые по ClickOnce ставятся - зачем велосипед изобретать?