Я прочитал много сообщений от stackoverflow, но не было решения для моей проблемы. Я хочу получить номер версии работающей установки Windows 10 (например, 1809 или 1909) в C# или WinJS. Я разрабатываю приложение UWP с Cordova (Javascript), и у меня также есть плагин Cordova (winmd) в C#, который я могу использовать, но нет никакого API, чтобы получить этот номер версии 4 di git.
У меня есть код WinJS / Javascript, который работал до версии 1903:
var ApiInformation = Windows.Foundation.Metadata.ApiInformation;
if (ApiInformation.isApiContractPresent("Windows.Foundation.UniversalApiContract", 9)) {
return 9999; // TODO: fix this build number, when it is released
} else if (ApiInformation.isApiContractPresent("Windows.Foundation.UniversalApiContract", 8)) {
return 1903;
} else if (ApiInformation.isApiContractPresent("Windows.Foundation.UniversalApiContract", 7)) {
return 1809;
} else if (ApiInformation.isApiContractPresent("Windows.Foundation.UniversalApiContract", 6)) {
return 1803;
} else if (ApiInformation.isApiContractPresent("Windows.Foundation.UniversalApiContract", 5)) {
return 1709
} else if (ApiInformation.isApiContractPresent("Windows.Foundation.UniversalApiContract", 4)) {
return 1703;
} else if (ApiInformation.isApiContractPresent("Windows.Foundation.UniversalApiContract", 3)) {
return 1607;
} else if (ApiInformation.isApiContractPresent("Windows.Foundation.UniversalApiContract", 2)) {
return 1511;
} else if (ApiInformation.isApiContractPresent("Windows.Foundation.UniversalApiContract", 1)) {
return 1507;
} else {
return 0;
}
Но поскольку Windows 10 1909 - это только версия с исправлением ошибок без собственного SDK, новой версии UniversalApiContract также не существует. Таким образом, при установке Windows 1909 проверка для UniversalApiContract «9» возвращает «false», и поэтому возвращается «1903» вместо «1909».
Есть ли разработчики, которые что-то узнают в версии 1909, который является новым или уникальным для 1909 года, поэтому мы можем проверить это и сказать, что это версия 1909?
Важно: я занимаюсь разработкой приложения UWP, а Windows имеет концепцию песочницы для приложений UWP, поэтому существуют некоторые ограничения, например, приложения UWP не могут получить доступ к реестру или всей файловой системе.
[ОБНОВЛЕНИЕ] Спасибо, Питер! Это работает сейчас.
Я использую его в UWP Cordova WinJS / Javascript с этим кодом:
var v = Windows.System.Profile.AnalyticsInfo.versionInfo.deviceFamilyVersion;
var major = (v & 0xFFFF000000000000) >> 48;
var minor = (v & 0x0000FFFF00000000) >> 32;
var build = (v & 0x00000000FFFF0000) >> 16;
var release = v & 0x000000000000FFFF;
if (build == 18363)
return 1909;
if (build == 18362)
return 1903;
Мне пришлось использовать Windows .System.Profile.AnalyticsInfo .versionInfo.deviceFamilyVersion , поскольку Windows .System.Profile.AnalyticsVersionInfo.deviceFamilyVersion было "неопределено" с подсказкой "Отказано в доступе"? Но приведенный выше код работает.