我们公司使用ClickOnce在内部部署我们的主应用程序(AppA)。我正在编写一个帮助应用程序(AppB),理想情况下,它将通过AppA启动。我们计划在AppA的解决方案中包含AppB,然后添加对AppB的引用。
有没有办法通过调用AppB.Program.Main()实际执行类似Process.Start的操作?
然后,为了增加一定程度的复杂性,这会如何影响AppA的ClickOnce部署?
非常感谢能够指出正确方向的任何见解。
感谢。
答案 0 :(得分:4)
System.Diagnostics.Process Proc = new System.Diagnostics.Process();
Proc.StartInfo.FileName = "Resources\\des.exe";
Proc.StartInfo.Arguments = "-D -u -k \"6AAAAA(!\" " + encryptedFileName + " " + newFileName;
Proc.StartInfo.WindowStyle = System.Diagnostics.ProcessWindowStyle.Hidden;
Proc.StartInfo.CreateNoWindow = true;
Proc.Start();
Proc.WaitForExit();
当我们部署它时,我们需要在Resources文件夹中部署des.exe。此外,我们将其部署为完全信任。
答案 1 :(得分:0)
我发现我们的解决方案是通过在“开始”菜单中查找.appref-ms“快捷方式”来查看他们是否已经安装了AppB。如果有,请执行Process.Start()。如果没有,请将它们发送到安装URL。
Private Sub LoadAppBFromClickOnce()
Dim argsToPass As String = "?arg1=1"
Dim s As String = Path.Combine(Environment.GetFolderPath(Environment.SpecialFolder.Programs), "CompanyName", "AppB.appref-ms")
If File.Exists(s) Then
Try
Process.Start(s, argsToPass)
Catch ex As Exception
Throw ex
End Try
Else
MessageBox.Show(String.Format("AppB is not installed. Please install from {0}.", APPB_INSTALL_URL), "Error", MessageBoxButtons.OK, MessageBoxIcon.Error)
Process.Start("iexplore.exe", APPB_INSTALL_URL)
End If
End Sub