Я запускаю функцию, которую я написал на JavaScript внутри клиента nodejs / Electron.
Эта функция предназначена для копирования файла с флэш-диска пользователя на его c:/Windows/System32
(файлкопируется туда, чтобы его можно было запустить из командной строки вручную при следующем прикосновении к компьютеру без необходимости переключать каталоги)
Проблема в том, что файлы не копируются, и copyFileSync не выдает ошибку.
Вот код, с которым у меня возникла конкретная проблема:
try {
console.log('copying t.bat');
fs.copyFileSync(remote.app.getAppPath() + '\\app\\files\\scripts\\files\\t.bat', 'C:\\Windows\\System32\\t.bat');
} catch(err) {
console.log('could not copy t.bat', err);
$('#mfail_title').text('Could not copy t.bat file');
$('#mfail_data').text(err);
UIkit.modal("#master_fail").show();
return false;
}
Как видите, у меня copyFileSync
внутри блока TRY CATCH
.Я знаю, что этот код работает, потому что в консоли я получаю copying t.bat
, но больше ничего.
Как я могу получить мои файлы для копирования или, по крайней мере, выдать ошибку, когда это невозможно?
Этот клиент работает в режиме OOBE на разных компьютерах с Windows 10, поэтому всегда имеет доступ администратора.
Я пытался обновить асинхронную версию copyFile, но у меня возникла та же проблема.Вот мой код
var source = remote.app.getAppPath() + '\\app\\files\\scripts\\files\\t.bat';
var destination = 'C:\\Windows\\System32\\t.bat';
fs.copyFile(source, destination, (err) => {
if (err) {
console.log(err);
} else {
source = remote.app.getAppPath() + '\\app\\files\\scripts\\files\\p.bat';
destination = 'C:\\Windows\\System32\\p.bat';
fs.copyFile(source, destination, (err) => {
if (err) {
console.log(err);
} else {
source = remote.app.getAppPath() + '\\app\\files\\scripts\\files\\p.bat';
destination = 'C:\\Windows\\System32\\p.bat';
child = spawn("powershell.exe",['-ExecutionPolicy', 'ByPass', '-File', remote.app.getAppPath() + '\\app\\files\\scripts\\' + type + '.ps1']);
}
});
}
});
Это должно скопировать файл, затем, когда он будет завершен, он должен скопировать другой файл, после завершения он должен запустить скрипт powershell.
Каждый экземпляр copyFile проверяетдля ошибки, прежде чем двигаться дальше, но она никогда не выдает ошибку, и файл никогда не копируется.