2010-06-02 9 views
1

Я думал, что последний Matlab делает это автоматически. Я проверил следующее ехе на чистую Win XP VM:Как я могу сделать .NET 4.0 Exe попросить пользователя загрузить .Net 4.0 framework/redistributable перед запуском этого exe?

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, когда я создал новый проект.

Спасибо.

ответ

2

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

+0

Более поздний вариант кажется больным. Я бы хотел, чтобы это было просто дано. –

+0

Это довольно боль, поэтому, если у вас нет определенной причины, я бы пошел со стандартным способом, как в ответе Алксанда. –

+0

Спасибо, ho1, вы знаете, есть ли более простой способ? –

3

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