Как я могу сделать .Net 4.0 Exe попросить пользователя загрузить .Net 4.0 framework / redistributable перед запуском этого exe? - PullRequest
1 голос
/ 02 июня 2010

Я думал, что последний 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. Почему каждый exe-файл .Net не может содержать небольшую часть служебной информации, и его первые байты позволяют определить, установлен ли .Net, и представить лучшее сообщение.

Есть ли какие-то настройки, которые я могу переключить, чтобы это исправить? Все настройки были настройками по умолчанию, предоставленными VS2010 при создании нового проекта.

Спасибо.

Ответы [ 2 ]

3 голосов
/ 02 июня 2010

Это то, для чего вы используете установщик. В .net это просто, вы просто «публикуете» свой проект и получаете установщик, который гарантирует, что .net установлен и тому подобное. Само приложение никогда не должно беспокоиться об этом.

2 голосов
/ 02 июня 2010

Как говорит Александр, вам действительно нужно использовать для этого установщик. Если это невозможно, вам придется сначала написать неуправляемый exe-файл, а затем либо запустить .net exe, либо указать пользователю загрузить инфраструктуру в зависимости от того, установлен ли он уже.

...