0

我为 Autodesk Inventor 创建了一个插件。现在它已完成并安装在每个用户工作站上。每当我有插件的更新时,用户需要运行安装程序来获取最新的更新,这个过程我想自动化用户在工作时总是拥有最新版本。因此,检查将在 Autodesk Inventor 加载期间进行。

我会检查FileVersionInfo

我可以使用MSDN网站上提供的示例代码来执行此操作

Public Shared Sub Main(ByVal args() As String)
    ' Get the file version for the notepad.
    ' Use either of the following two commands.
    FileVersionInfo.GetVersionInfo(Path.Combine(Environment.SystemDirectory, "Notepad.exe"))
    Dim myFileVersionInfo As FileVersionInfo = FileVersionInfo.GetVersionInfo(Environment.SystemDirectory + "\Notepad.exe")


    ' Print the file name and version number.
    Console.WriteLine("File: " + myFileVersionInfo.FileDescription + vbLf + "Version number: " + myFileVersionInfo.FileVersion)

End Sub

这将导致以下输出:

Old File: EMIA_001
Version number: 1.0.6113.27965

New File: EMIA_001
Version number: 1.0.6114.20817

但是将这个版本号相互比较的正确方法是什么?

4

2 回答 2

1

首先,要以这种方式自动更新插件,您需要做两件事:

  • 关闭 Inventor,因为所有加载的插件都将锁定其 DLL。
  • 从 Inventor 应用程序管理关闭事件,然后启动插件安装程序。

其次,对于版本比较,您可以在加载项中使用一个函数,如下所示:

    Private Function isUpToDate() As Boolean

        Dim UpToDate As Boolean = True

        Dim FileVersionInfo_LocalDLL As FileVersionInfo = FileVersionInfo.GetVersionInfo(System.Reflection.Assembly.GetExecutingAssembly.Location)
        Dim FileVersionInfo_GlobalDLL As FileVersionInfo = FileVersionInfo.GetVersionInfo("YourGlobalDllFullFileName")

        If String.Compare(FileVersionInfo_LocalDLL.FileVersion, FileVersionInfo_GlobalDLL.FileVersion) < 0 Then
            UpToDate = False
        End If

        Return UpToDate
    End Function
于 2017-02-17T16:39:20.737 回答
1

如果他们必须始终使用最新版本,那么只需在FileVersion属性上使用字符串比较。

版本由格式的文件和产品版本组成

    FileMajorPart . FileMinorPart . FileBuildPart . FilePrivatePart

例如,如果您想确保只有 Major + Minor 相同,则可以单独比较这些属性中的每一个。

于 2016-09-27T10:14:24.520 回答