好吧,我目前正在开发一个更新器,它正在更新多个文件,例如可执行文件和驱动程序。每次推送更新时我都不想替换每个文件,而只是替换实际更新的文件。一个简单的方法是阅读该程序的版本,但我不知道如何阅读所需的信息。我浏览了IO.File,但没有找到任何有用的东西。
答案 0 :(得分:0)
您可以创建一个单独的文件,指明您要更新的每个文件的版本。这通常是我做事的方式。
假设你有一个文件,我们称之为“version.txt”。理想情况下,你可以像这样设置它:(你可以做一个行格式或javascript,无论你感觉最舒服)
Dim alatestVersion As Double
alatestVersion = 2.2
因此,在updater方法中,您可以将最新版本设置为2.2。
template<template<class...>class element_hash=std::hash>
struct symmetric_range_hash {
template<class T>
std::size_t operator()( T const& t ) const {
std::size_t r = element_hash<int>{}(0); // seed with the hash of 0.
for (auto&& x:t) {
using element_type = std::decay_t<decltype(x)>;
auto next = element_hash<element_type>{}(x);
r = r + next;
}
return r;
}
};
然后,您可以解析文本文件并创建一个方法来检查该组件是否是最新版本。在此之后,如果mainapplicationVersion!= alatestVersion然后[更新]。
希望这有帮助。
答案 1 :(得分:0)
尝试此操作来循环浏览文件夹的文件。
Option Explicit
Sub Macro1()
Dim varFile As Variant
Dim i As Integer
Dim objShell
Dim objDir
Set objShell = CreateObject("Shell.Application")
Set objDir = objShell.Namespace("C:\DIRECTORY_OF_FILES_HERE\")
For Each varFile In objDir.Items
Debug.Print objDir.GetDetailsOf(varFile, 156) ' 156 = File Version
Next
' Use this to see the numbers of all the attributes, e.g. 156 = File Version
'For i = 0 To 300
' Debug.Print i, objDir.GetDetailsOf(objDir.Items, i)
'Next
End Sub