Как я могу сделать .NET 4.0 EXE попросить пользователя загрузить .NET 4.0 Framework / redistributable перед запуском этого EXE?
-
23-10-2019 - |
Вопрос
Я думал, что последний Matlab делает это автоматически. Я протестировал следующий EXE на чистой Win XP VM:
namespace DotNetTest
{
using System.Windows.Forms;
class Program
{
static void Main(string[] args)
{
MessageBox.Show("Howdy!");
}
}
}
Когда я запускаю его на компьютере, на котором все это установлено, он показывает поле сообщения и окно. Когда я запускаю его на чистой виртуальной машине, я получаю эту ошибку:
Title: DotNetTest.exe - Application Error
Icon: Error
Buttons: {OK}
Message Body: The application failed to initialize properly (0xc0000135). Click on OK to terminate the application.
Я ожидаю лучшего от гений MSFT. Почему каждый .net Exe содержит крошечный кусочек накладных расходов и не может иметь самые первые байты, которые они выполняют работу по обнаружению, установлено ли .NET и представление лучшего сообщения.
Есть ли какая -то настройка, которую я могу перевернуть, чтобы исправить это? Все настройки были по умолчанию, предоставленные VS2010, когда я создал новый проект.
Спасибо.
Решение
Как говорит Александр, вы должны действительно использовать установщик для этого. Если это невозможно, вам нужно сначала написать неуправляемый EXE, а затем либо запустить .NET EXE, либо сказать пользователю загрузить фреймворк в зависимости от того, уже установлен.
Другие советы
Это то, для чего вы используете установщик. В .net это просто, вы просто «публикуете» свой проект и получаете установщик, который делает Shure, который установлен .NET и тому подобное. Само приложение никогда не должно беспокоиться об этом.