3

我通常只是在 C# 中创建 Web 应用程序,但我试图将我的手转向创建 WinForms 应用程序。我创建了一个 OpenVPN 客户端,它基本上是OpenVPN.exe. 该项目需要OpenVPN.exe包含该文件,它的位置如下:

 string ovpnLocation = System.Windows.Forms.Application.StartupPath
      + "\\OpenVPN_Client\\openvpn.exe";

我将以下属性应用于 VS 中的文件:

  • 构建操作:内容
  • 复制到输出目录:始终复制

现在,当我尝试使用 ClickOnce 安装程序部署应用程序时,出现以下错误:

File, openvpn.exe, has a different computed hash than specified in manifest.

在清理、重建并遵循我在整个互联网上可以找到的所有其他帖子中的说明之后,我似乎无法使用这些当前设置解决这个问题。我能够安装和运行它的唯一方法是将文件上的设置更改为以下内容:

  • 构建操作:
  • 复制到输出目录:始终复制

现在使用这些设置,在部署时,我没有得到相同的哈希错误,但似乎文件的位置已经移动,并且我的代码在整个地方抛出了 execptions,因为它找不到它。

所以有两种解决方案:

  • 解决哈希问题,无需更改代码。
  • 现在找到一些代码来帮助我在最终用户机器上找到文件。

非常感谢任何帮助!

4

1 回答 1

0

我设法通过将项目升级到 .Net 4.0 来解决这个问题。

通过使用相对路径解决了文件路径的问题:

 string ovpnLocation = "OpenVPN_Client\\openvpn.exe";

而不是试图创建一个绝对:

string ovpnLocation = System.Windows.Forms.Application.StartupPath
  + "\\OpenVPN_Client\\openvpn.exe";
于 2012-09-14T19:09:55.347 回答