Может ли управляемое приложение отображать значимое окно сообщения, когда не установлено .NET? - PullRequest
1 голос
/ 11 мая 2011

Написав небольшое приложение .NET Windows Forms 2.0, я стараюсь не поставлять распространяемый пакет .NET Framework (~ 20 МБ), чтобы сохранить его небольшой размер.

Что я могу сделать, так это использовать NSIS для создания установщика, который проверяет установленный .NET и загружает его по требованию.

Теперь я спросил себя, можно ли встроить проверку ошибок «бедняги» прямо в сам исполняемый файл .NET?

Вроде как наличие неуправляемой части, которая проверяет наличие .NET, и управляемой части, которая представляет собой само приложение.

Возможна ли такая вещь? Я был бы довольно уверен, если бы мог даже настроить текст одного сообщения, которое отображается при запуске без .NET.

Ответы [ 3 ]

2 голосов
/ 11 мая 2011

Ни за что. Приложение .NET является приложением .NET, и средство запуска не может выполнить код .NET, если не установлено .NET. Что вы можете сделать, так это обернуть приложение .NET неуправляемым кодом - напишите простое приложение на C ++ и внедрите свое приложение .NET в качестве двоичного ресурса и, в основном коде, проверьте реестр, если реестр существует, сохраните. Сетевой ресурс на диске, создайте процесс, установите все параметры (например, текущая папка, параметры командной строки, если необходимо) и запустите процесс. Если нет - показать сообщение.

1 голос
/ 11 мая 2011

Вы можете включить небольшую настройку фреймворка из сетевого пакета.Если вам не нравится это решение, вы также можете создать проект установки, который проверит наличие .net framework.Или создайте MSI-инсталляцию с другим программным обеспечением.

1 голос
/ 11 мая 2011

Вы можете легко написать исполняемый файл на языке соответствия, который проверяет время выполнения .net, но даже это не так просто, как кажется. Если вы не будете осторожны в написании неуправляемого приложения, вам может понадобиться установить перенаправляемый vcrt любым способом, который сделает ваши усилия бесполезными.

...