2017-02-23 541 views
0

У меня есть .exe MapaReporting.exe, у которого есть .config файл MapaReporting.exe.config, где указаны некоторые из статических параметров (например, URL). Если я запустил .exe из приглашения CMD, он делает то, что должен делать (загрузка файла в SharePoint).VB exe не находит вызов конфигурационного файла из R System/System2

enter image description here

Это означает, что для меня, что как .exe и .config делают свою работу.

Затем я попытаюсь вызвать ту же работу с R, используя соответствующую инструкцию system. Суть того, что я делаю, это обеспечивается этот короткий сценарий (фактическая вещь включает в себя надлежащую функцию, но ниже линии, что материя):

currentDir <- getwd() 
setwd("//UKLDNNAS902/RESTRICTED/Fund of Funds/Team/Matteo/R/SPUploader") 
exeFile <- "MapaReporting.exe" 
exeString <- "PhysicalLocation-C:\\DELETEME.xlsx filename-THISISATEST.xlsx FolderName-SFR ReportType-SFR ReportDate-12/12/2016 Fund-NAF PortfolioManager-A566848" 
system(paste(exeFile, exeString)) 
setwd(currentDir) 

, но я получаю следующее сообщение об ошибке:

Site Url is missing in configuration file. at MapaReporting.Program.Main(String[] args) 

Что указывает на то, что при использовании CMD .exe находит соответствующий .config, когда я пытаюсь сделать то же самое с R, он выдает эту ошибку. Я попытался инкапсулировать системный вызов в соответствующую папку, как вы можете видеть, и я также попробовал функцию system2. Все без успеха. Любая помощь более чем приветствуется! Благодарю.

UPDATE: изменив скрипт, чтобы указать на локальную папку и добавив опцию wait = T к заявлению system согласно рекомендациям Грега ниже, ничего не изменилось.

Использование утилиты Process Monitor это список неудач:

enter image description here

ответ

1

Вот несколько вещей, которые вы можете попробовать:

  1. Изменение командной системы «ждать», как это : system(paste(exeFile, exeString), wait=T)
  2. Похоже, что вы используете исполняемый файл из общей сетевой папки (// UKLDNNAS902). Работает ли он, если вы копируете файлы на локальный локальный диск и запускаете его оттуда? Это может указывать на проблему с разрешениями Share или File.
  3. Загрузите и запустите ProcMon, запустите свою системную команду еще раз и найдите любые события в консоли Procmon, связанные с вашим .config-файлом. Это может дать вам подсказки о том, что происходит не так, когда ваша программа пытается прочитать этот файл (например, пытается прочитать из неправильного местоположения, проблемы с разрешением и т. Д.). Если файл .config больше не появляется в консоли ProcMon, найдите все неудавшиеся события, указывающие, что библиотека (или запись в реестре), необходимая для чтения файла .config, не загружалась.

Update: Я был в состоянии воспроизвести проблему путем повторного создания # командной строки приложения .Net/C, который считывает из файла .config. Я был в состоянии решить эту проблему, изменив командную строку:

exeFile <- "cmd.exe /C MapaReporting.exe" 

Для справки, вот весь сценарий я использовал:

currentDir <- getwd() 
setwd("C:/SPUploader") 
exeFile <- "cmd.exe /C ConsoleApplicationTest.exe" 
exeString <- "PhysicalLocation-C:\\DELETEME.xlsx filename-THISISATEST.xlsx FolderName-SFR ReportType-SFR ReportDate-12/12/2016 Fund-NAF PortfolioManager-A566848" 
system(paste(exeFile, exeString)) 
setwd(currentDir) 

Обратите внимание, что я побежал это в RStudio администратора.

Позвольте мне знать, если это работает для вас ...

+0

Спасибо Грег, я попробовал следующее переходящую 1 и 2 выше: 'EXEFILE <- "C: /SPUploader/MapaReporting.exe"' ' exeString' то же, что и раньше, а затем 'system (paste (exeFile, exeString, wait = T))' , но у меня такая же ошибка, как упоминалось выше. Я попробую с 3 сейчас, пытаясь понять, что не так. Что я не понимаю, так это то, что все, кажется, находит соответствующие .dll 'Microsoft.SharePoint.Client.dll' и' Microsoft.SharePoint.Client.Runtime.dll' все в порядке. У меня возникает соблазн отказаться от любой проблемы с разрешения. –

+0

Обновлен с помощью утилиты ProcMon. Пожалуйста, дайте мне знать, если вам нужно что-то еще, чтобы определить какую-либо проблему. –

+0

Еще не радость, я боюсь, но я дал ей только быструю попытку. Позвольте мне лучше посмотреть завтра. –