首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >FileVersionInfo.GetVersionInfo不松开文件

FileVersionInfo.GetVersionInfo不松开文件
EN

Stack Overflow用户
提问于 2022-02-23 14:40:57
回答 2查看 96关注 0票数 0

我正在尝试检查用户正在运行的Windows应用程序的版本与服务器上的版本,以确定是否需要更新本地版本。我这么做是通过打电话

代码语言:javascript
复制
FileVersionInfo.GetVersionInfo("path to file on server") 

阅读版本信息。但是,当我从计算机管理控制台查看服务器上打开的文件时,我会看到许多在读模式下打开的文件实例。当我需要将新版本复制到服务器时,这会导致问题。我首先必须关闭所有打开的文件,然后它才会让我写信给它。即使它们只在读模式下打开,它仍然让我关闭它们。

是否有更好的方法从服务器获取文件版本?或者是否有一种方法来处理我正在使用的FileInfo变量,以便它断开连接?

EN

回答 2

Stack Overflow用户

发布于 2022-02-23 19:30:56

我还没有找到一个好的解决方案使用FileVersionInfo。从我的研究来看,使用FileVersionInfo并不像您预期的那样释放变量,所以我改为从PowerShell脚本获取文件信息。这允许我释放对象和释放文件,因为我已经成功测试。下面是获取信息的代码:

代码语言:javascript
复制
Dim server_version As String = ""
Dim invoker As New RunspaceInvoke
Dim command As String = "(Get-Item path_to_file_no_quotes_needed).VersionInfo.FileVersion"

   Try
      Dim outputObjects As Collection(Of PSObject) = invoker.Invoke(command)
      For Each result As PSObject In outputObjects
        server_version = result.ToString
      Next
   Catch ex As Exception

   End Try
   invoker.dispose

当这是从我的应用程序运行时,我看到文件在读取模式下在服务器上打开,但是它在大约3秒后消失。所以我可以看到这个物体正在被正确的处理。只有FYI,没有FileVersionInfo.dispose方法。

此外,要使其发挥作用,您需要:

代码语言:javascript
复制
Imports System.Management.Automation

在你的项目中需要参考。它可在下列文件中找到:

C:\Windows\assembly\GAC_MSIL\System.Management.Automation\1.0.0.0__31bf3856ad364e35\System.Management.Automation.dll

票数 0
EN

Stack Overflow用户

发布于 2022-02-23 16:44:41

在显示的事件中,我有如下代码,

代码语言:javascript
复制
Try
    If My.Application.IsNetworkDeployed AndAlso My.Application.Deployment.CheckForUpdate Then
        'update available - the update will happen when app is closed
    End If
Catch ex As Exception
    'error while checking for update or update is corrupt
End Try

我这样做是为了向用户提供更新可用的指示。

在我做的FormClosed活动中

代码语言:javascript
复制
Try
    'see if update is available, and install if it is
    If My.Application.IsNetworkDeployed Then
        If My.Application.Deployment.CheckForUpdate Then
            My.Application.Deployment.Update()
        End If
    End If
Catch ex As Exception
End Try
票数 -1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/71238980

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档