Я стажер в компании-разработчике программного обеспечения. У меня есть надстройка, запрограммированная в C# для SAP B1. В этом дополнении Я использую свою собственную функцию обновления по некоторым причинам (не могу использовать clickOnce из-за контрольных сумм в SAP). Эта функция обновления включена в основной класс. Все остальные новые функции, которые я программирую, создаются как файлы DLL.Обработка процессов в функции обновления C#
Только один файл dll с именем "...main_functions.dll"
включен в приложение в начале. И все другие DLL-файлы могут быть добавлены внутри этого файла dll и загружены на ftp-сервер. Приложение загрузит новую версию этого файла «... main_functions.dll» с другими DLL-файлами и заменит старые файлы до того, как файлы будут используемые при запуске.
Проблема заключается в том, что после того, как эта надстройка будет запущена, она будет использоваться в том же терминале в офисах клиентов, что приведет к сбою надстройки из-за того, что приложение пытается заменить файл, который в настоящее время используется другим пользователем в терминале. Теперь я пытаюсь найти решение, например, если есть другие процессы, запущенные в терминале другими пользователями, остановить процесс обновления и отобразить сообщение типа «пожалуйста, закройте все другие экземпляры этого приложения до начала обновления!».
Если кто-то может дать мне некоторые идеи по его решению, мы высоко ценим.
Я предполагаю, что часть C# состоит из серии Dll, одна из которых является точкой входа и что модуль SAP просто перехватывает основную функцию dll. Таким образом, вы должны иметь возможность развернуть часть C# отдельно от любой части SAP. Внедрите проект установщика в C# Solution, это должно позаботиться о проблемах, о которых вы говорите. Если вы не хотите «сворачивать свои собственные», есть много сторонних, таких как InstallShield. – bilpor
@bilpor Проблема в том, что addOn зарегистрирован под SAP. Представьте себе это как часть его после его регистрации. Поэтому использование стороннего решения для обновления совершенно невозможно. – Isuru