0

我在 Visual C++ 中创建了一个应用程序(使用命令行)。我在 Visual C# 中为它制作了一个 GUI,这样用户就不必使用命令行并可以从 GUI 运行它。现在,我该如何制作相同的安装程序?在我的 GUI 中,我有以下代码调用我的应用程序并运行它:

                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);

它仍然无法正常工作。我哪里错了?

4

1 回答 1

1

除非有你不能这样做的原因,否则我建议将安装程序配置为将 CLI 和 GUI 可执行文件放在同一位置,并完全跳过整个相对路径问题。

如果您希望允许用户在应用程序位于不同位置的情况下创建非默认安装后配置,请为您的 C# 应用程序添加一个 app.info 文件,用户可以在其中指定 CLI 应用程序的位置(如果它不在与 UI 相同的文件夹。

我不知道有任何简单的方法可以在安装程序中指定两个不同的位置并使用它们来动态创建/修改 app.info 文件。如果您需要,我认为您需要编写一个由安装程序调用的自定义配置应用程序来创建 app.info 文件。

于 2012-09-11T21:13:15.833 回答