Как я могу сделать .NET 4.0 EXE попросить пользователя загрузить .NET 4.0 Framework / redistributable перед запуском этого EXE?

StackOverflow https://stackoverflow.com/questions/2960399

Вопрос

Я думал, что последний 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 и тому подобное. Само приложение никогда не должно беспокоиться об этом.

Лицензировано под: CC-BY-SA с атрибуция
Не связан с StackOverflow
scroll top