2012-09-11 87 views
0

我在Visual C++(使用命令行)中創建了一個應用程序。我已經在Visual C#中爲GUI做了一個GUI,以便用戶不必使用命令行並可以從GUI運行它。現在,我該如何去做一個安裝程序?在我的GUI我有下面的代碼調用我的應用程序並運行它:在C#中封裝GUI和在Visual C++中封裝應用程序

   string cmdText; 
       cmdText = @"C++HeaderConversionToQFASTXML.exe " + " " + textBox1.Text + " " + textBox2.Text; 
       ProcessStartInfo info = new ProcessStartInfo("cmd.exe"); 
       info.UseShellExecute = false; 
       info.RedirectStandardInput = true; 
       info.RedirectStandardOutput = true; 
       info.CreateNoWindow = true; 
       info.WorkingDirectory = @"C:\forAbishek\C++HeaderConversionToQFASTXML\Release\"; 
       Process p = Process.Start(info); 
       p.StandardInput.WriteLine(cmdText); 

在此我想工作目錄是在.exe文件(C++ HeaderConversionToQFASTXML.exe)將駐留在該目錄用戶機器。我如何確保GUI獲取此信息? .exe將安裝在用戶機器上。有人可以幫我嗎?謝謝。

我已經做了以下變化:

    string cmdText; 
        cmdText = @"C++HeaderConversionToQFASTXML.exe " + " " + textBox1.Text + " " + textBox2.Text; 
        ProcessStartInfo info = new ProcessStartInfo("cmd.exe"); 
        info.UseShellExecute = false; 
        info.RedirectStandardInput = true; 
        info.RedirectStandardOutput = true; 
        info.CreateNoWindow = true; 
        String path = System.Reflection.Assembly.GetExecutingAssembly().Location; 
        path = System.IO.Path.GetDirectoryName(path); 
        Directory.SetCurrentDirectory(path); 
        MessageBox.Show(path); 
        info.WorkingDirectory = path; 
        Process p = Process.Start(info); 
        p.StandardInput.WriteLine(cmdText); 

它仍然是行不通的。我哪裏錯了?

回答

1

除非有理由不這樣做,否則我會建議配置安裝程序以將CLI和GUI可執行文件放在同一位置,並完全跳過整個相對路徑問題。

如果您希望允許用戶創建應用程序位於不同位置的非默認安裝後配置,請爲您的C#應用​​程序添加一個app.info文件,其中用戶可以指定CLI應用程序的位置if它與UI不在同一個文件夾中。

我不知道任何簡單的方法來指定安裝程序中的兩個不同的位置,並使用它們動態地創建/修改app.info文件。如果您需要,我認爲您需要編寫一個由安裝程序調用的自定義配置應用程序來創建app.info文件。

+0

謝謝。我想我寧願堅持讓CLI和GUI處於相同的位置。現在,我的問題是,在這種情況下如何指定工作目錄?正如上面代碼片段中的info.WorkingDirectory只在用戶選擇安裝GUI的位置後才知道。 – Retry

+0

你需要比「不工作」更具體;我們不介意讀者。也就是說,看起來你讓創業公司比需要的更復雜。將您的CLI應用程序作爲processInfo對象中的可執行文件,以及ProcessInfo.Arguments中的命令行參數。 –

+0

謝謝@Dan Neely。抱歉,模棱兩可。 – Retry