Я разработал приложение Adobe Air для небольшой внутренней сети. Все компьютеры работали под управлением Windows 7, но теперь начинают заменяться системами Windows 10. Я могу получить доступ к подключенному диску «I» и локальному диску «C» с помощью класса файлов на компьютерах с Windows 7, но только с подключенным диском «I» в Windows 10.
Редактировать: Capabilities.localFileReadDisable возвращает false как в системах Windows 7, так и в системах Windows 10.
**** Я мог бы обойти необходимость в локальном файле, если бы Air мог получить какую-либо конкретную информацию о машине, на которой он работает, серийный номер, mac-адрес, имя компьютера и т. Д. На самом деле не имеет значения, какую информацию я получить, это просто должно быть уникальным для этого компьютера. И использование куки не вариант, потому что они нестабильны ****
Следующий код выполняет две вещи.
Во-первых, он отображает текущую версию файла Air и ищет файл на подключенном диске с последней доступной версией. Если они совпадают, на компьютере установлена последняя версия. Если они не совпадают, новая версия отображается для пользователя, указывая, что приложение должно быть обновлено.
Во-вторых, он получает имя конкретного компьютера из текстового файла, находящегося на локальном диске. Это имя используется в отчетах, чтобы указать, какой компьютер использовался. Вероятно, есть гораздо лучший способ сделать это, но в Windows 7 он отлично работает для меня. К сожалению, Windows 10 выдает ошибку при попытке доступа к файлу на локальном диске.
Ошибка № 2044: необработанная ошибка ioError :. текст = Ошибка № 2032: Ошибка потока. URL: файл: /// C: /machineName.txt
Любая помощь будет принята с благодарностью.
var appXML:XML = NativeApplication.nativeApplication.applicationDescriptor;
var ns:Namespace = appXML.namespace();
version_txt.text = "V"+appXML.ns::versionNumber;
// Define path to the version number
var updatePath:URLRequest = new URLRequest("file:///I:/air/update.txt");
// Define path to name of specific pc
var machineName:URLRequest = new URLRequest("file:///C:/machineName.txt");
// Define the URLLoaders
var updateLoader:URLLoader = new URLLoader();
function checkUpdate():void{
updateLoader.load(updatePath);
}
var nameLoader:URLLoader = new URLLoader();
function checkName():void{
nameLoader.load(machineName);
}
// Listen for when the file has finished loading.
updateLoader.addEventListener(Event.COMPLETE, loaderComplete);
function loaderComplete(e:Event):void
{
// The output of the text file is available via the data property
// of URLLoader.
if(Number(appXML.ns::versionNumber)<Number(updateLoader.data)){
update_txt.text = "UPDATE TO V"+updateLoader.data;
}
}
nameLoader.addEventListener(Event.COMPLETE, nameComplete);
var name_txt:String = new String;
function nameComplete(e:Event):void{
name_txt = nameLoader.data;
var holder:String = version_txt.text;
version_txt.text = name_txt+" ** "+holder;
}