2011-02-06 12 views
4

.msiをインストールし、そのcmdファイルをC#コードで実行するcmdファイルを作成しようとしています。 Visual Studioからf5またはcontrol + f5を使用して実行すると、コードは完全に機能します。コマンドファイルをプログラムで作成/実行する

ただし、コードを.msiファイルにパッケージしてインストールすると(wpfアプリケーション)、関連するコードを実行するとコマンドウィンドウが開きますが、コマンドは実行されません。代わりに「C:\ Programは内部コマンドまたは外部コマンドとして認識されません...」このエラーは、ファイルパスの前後に引用符がないことを意味しますが、引用符の下に表示されているようにある。また、プログラムファイルディレクトリに移動すると、Reinstall.cmdファイルが存在し、引用符が付きます。生成されたReinstall.cmdファイルをダブルクリックすることもできます。何が私はここで行方不明ですか?あなたは引用符があります下に見ることができるように

private string MSIFilePath = Path.Combine(Environment.CurrentDirectory, "HoustersCrawler.msi"); 
     private string CmdFilePath = Path.Combine(Environment.CurrentDirectory, "Reinstall.cmd"); 

private void CreateCmdFile() 
     { 
      //check if file exists. 
      if (File.Exists(CmdFilePath)) 
       File.Delete(CmdFilePath); 
      //create new file. 
      var fi = new FileInfo(CmdFilePath); 
      var fileStream = fi.Create(); 
      fileStream.Close(); 
      //write commands to file. 
      using (TextWriter writer = new StreamWriter(CmdFilePath)) 
      { 
       writer.WriteLine(String.Format("msiexec /i \"{0}\"", MSIFilePath));// /quiet 
      } 
     } 

     private void RunCmdFile() 
     {//run command file to reinstall app. 
      var p = new Process(); 
      p.StartInfo = new ProcessStartInfo("cmd.exe", "/k " + CmdFilePath); 
      p.Start(); 
      p.WaitForExit(); 
     } 

答えて

3

:ここ

はコードです。

cmd.exeを実行しているのではなく、最初の部分に配置します。

パスに空白があるため、引用符で囲む必要があります。試してください:

関連する問題