【问题标题】:How to launch a readonly "copy" of a VB Windows Form application如何启动 VB Windows 窗体应用程序的只读“副本”
【发布时间】:2017-11-11 00:26:05
【问题描述】:

我正在用 VB.NET 语言在 Visual Studio 中开发一个简单的应用程序。我说简单,因为它不需要任何安装,它是一个独立的 exec 文件。这个程序存储在一个网络位置,以便我公司的所有员工都可以使用它,但我经常在它上面工作,问题是如果有人在使用这个应用程序(从网络启动),我无法替换文件,因为它当前正在使用。

在 VB 中是否有任何方法可以使用其 .exe 启动 Windows 窗体应用程序并使该文件仍可用于任何修改?

【问题讨论】:

  • AFAIK 你可以重命名exe,即使它正在使用,然后添加你的新exe,虽然你不能在使用时覆盖它。
  • 您是否考虑过将应用程序设为 Click Once 部署?然后,您可以将安装程序发布到网络驱动器上,而不是应用程序本身。然后运行安装程序会将应用程序的本地副本安装到“我的文档”中用户的 AppData 文件夹中。这样做的另一个好处是您可以将更新发布到安装程序并自动将更新推送给用户。
  • @Jaxi OK 我试过了,但它不是一个好的最终解决方案,因为我必须重命名旧文件,然后复制新文件,我的同事将有两个 exec 文件,它们是......您认识的基本用户...
  • @R.McMillan 我必须研究这个选项,我试过了,但它会在目标文件夹中生成很多无用的文件,这就是为什么我试图使用 VB 代码或项目属性找到解决方案的原因

标签: vb.net winforms


【解决方案1】:

我已经解决了类似的问题:

  • 每个用户都有自己的 exe 副本
  • 程序启动时(或在计时器循环中)将网络文件修改日期(或版本号或其他标志)与本地副本进行比较
  • 如果网络文件较新,通知用户有新版本可供下载
  • (有条件地)启动一个小助手程序,它将新文件复制到本地文件夹,关闭当前 exe 并在复制所有新文件后再次从下载器(助手)启动它

【讨论】:

  • "每个用户都有自己的 exe 副本" 可能类似于启动应用程序时"如果不是 Application.CurrentPath = %userdata% 然后将 Exe 文件复制到 %userdata%,从 %userdata% 启动应用程序并关闭此应用程序”。有没有“正确”的方法来做到这一点?目前,由于大型公司安装 Windows 10 软件包,启动时很难将 exe 文件添加到所有计算机和所有配置文件
  • 不,我忘了说,第一次你必须手动将整个程序复制到本地文件夹。或者也许你的方式会奏效。我并不是说这种方法是最好的或正确的,有时你必须做一些拐角处的事情......不知道赢得 10 个额外津贴,从来没有遇到过这样的问题......也许看看“点击一次”选项,正如有人建议的那样。最后可能会更容易。
猜你喜欢
  • 2011-07-01
  • 1970-01-01
  • 2012-03-11
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多