2014-10-20 2 views
0

У меня есть файл exe, который я запускаю в командной строке Windows и даю аргументы командной строки. Я прошел через this post и побежал следующую команду:C# Как получить PATH встроенного файла .exe

System.Reflection.Assembly.GetExecutingAssembly().GetManifestResourceNames(); 

Но все же, чтобы дать мне ресурсные файлы, расположенные в WindowsFormsApplication1 \ OBJ \ папка Debug

Я прошел через this post, но это говорит о том, как выполните exe напрямую, не запуская его из cmd.

Я даже попробовал следующую команду:

string path = Path.Combine(Path.GetTempPath(), "MyApplication.exe"); 

Он работал, но после очистки моего C: \ Users \ имя_пользователя \ AppData \ Local \ Temp папку приложения начали давать ошибку.

Я даже попробовал следующую команду:

global::ApplicationName.Properties.Resources.MyApplication 

, но он дает байт [], а не путь к приложению.

Все, что я хочу знать, как запустить приложение, которое встраивается в моих ресурсах, чтобы я мог успешно выполнить следующую команду:

var proc = new Process 
        { 
         StartInfo = new ProcessStartInfo 
         { 
          FileName = "cmd.exe", 
          Arguments = "/K " + MyApplication+" Argument "+Path1+" "+Path2 , 
          UseShellExecute = false, 
          RedirectStandardOutput = true, 
          CreateNoWindow = true 
         } 
        }; 
        proc.Start(); 

        while (!proc.StandardOutput.EndOfStream) 
        { 

         string line = proc.StandardOutput.ReadToEnd(); 
         using (System.IO.StreamWriter file = new System.IO.StreamWriter(resultFile)) 
         { 
          file.WriteLine(line); 
         } 
        } 
+0

У вас есть встроенный файл в качестве ресурса в вашем проекте? Если это так, вы должны извлечь его в каталог в файловой системе, прежде чем запускать его. –

+0

Да Я добавил файл приложения в качестве ресурса. Как его извлечь и запустить? Могу ли я удалить его после запуска, чтобы приложение не создавало временные файлы нежелательной почты? – Priyanka

ответ

0

Extract ресурса в файл в файловой системе, а затем запустить Это.

byte[] fileContents = ApplicationName.Properties.Resources.MyApplication; 
File.WriteAllBytes("MyApplication.exe", fileContents); 

Теперь вы можете запустить файл, используя MyApplicaton.exe как путь.

+0

Я пробовал следующую команду: byte [] fileContents = global :: ApplicationName.Properties.Resources.MyApplication; File.WriteAllBytes («MyApplication.exe», fileContents); MessageBox.Show (MyApplication.exe); но это дает мне ошибку – Priyanka

+0

Почему вы делаете messagebox cloc.exe? Написанный фрагмент кода создает файл в текущем каталоге, поэтому вы можете запустить его с помощью process.start –

+0

Я не хочу запускать приложение как есть. Я хочу запустить его через командную строку, чтобы я мог дать ему аргументы. Я сделал MessageBox.Show, чтобы узнать, дает ли он мне путь – Priyanka

Смежные вопросы