Я пытаюсь помочь перенести службу .Net на более современную версию .Net (возможно, Core) и использовать установщик MSIX. В приложении есть несколько файлов конфигурации, сгенерированных компилятором (в исходном коде это app.config, но при компиляции они становятся * .exe.xml), они устанавливаются в файл программы рядом с двоичными файлами и вспомогательным приложением GUI, а также приложением. сам может изменить их, чтобы изменить поведение службы (порт, IP, сертификат TLS и т. д.).
Запрещается запись в C: \ Program Files \ WindowsApps \ имя_пакета. Запрещается запись в папке C: \ Program Files \ WindowsApps \ имя_пакета.
Проблема, с которой я столкнулся, заключается в том, что установщик MSIX делает так, что файлы в его изолированной версии Program Files не могут быть записаны в (см. выше). Это означает, что это приложение не может быть настроено, поэтому я пытаюсь выяснить не только, как снова сделать приложение настраиваемым, но и как Windows хочет обрабатывать конфигурацию приложения.
Прямо сейчас кажется, что есть два общих подхода к этому:
- записать данные конфигурации в папку AppData / local учетной записи службы
- попробуйте имитировать поведение
/etc/Myservice
в другой папке. (имеется в виду локальный общесистемный каталог, в котором хранятся данные конфигурации для службы)
Если вы предлагаете №1, ответьте на следующие дополнительные вопросы:
- Как переместить файлы конфигурации приложения в каталог файлов конфигурации пользователя
- как администратор с обычной учетной записью может изменить файл конфигурации в папке AppData учетной записи службы с помощью упомянутого вспомогательного приложения с графическим интерфейсом пользователя? (нужно ли им разрешить настольный доступ к учетной записи службы, войти в систему и запустить графический интерфейс)?
Если вы предлагаете №2:
- Где, по вашему мнению, существует этот каталог (в частности, где это разрешено в MSIX)?
- Как мне сказать приложению .Net, что файлы находятся не рядом с ним? Могу я просто использовать AppData.CurrentDomain.SetData?
Program Files
или где-либо еще, где хранятся приложения UWP. Windows обеспечивает это с 1990-х годов, делаяProgram Files
доступным только для чтения. В более поздних версиях попытки некорректно работающих приложений писать туда перенаправляются в другие папки. - person Panagiotis Kanavos   schedule 15.12.2020Program Files
или где-либо еще хранятся приложения UWP. В всех случаях приложения должны сохранять свои редактируемые данные в%APPDATA%
или%LOCALAPPDATA%
для общих настроек или%USERAPPDATA%
для пользовательских данных. Фактический путь к специальной папке можно получить с помощью Environment.GetFolderPath - person Panagiotis Kanavos   schedule 15.12.2020exe.config
для начала. Даже приложения, которые так думали, перенаправлялись самой ОС. Поскольку вы используете ASP.NET Core, вы можете легко хранить файлы настроек, где захотите, и заставлять их переопределять настройки, хранящиеся вместе с приложением. - person Panagiotis Kanavos   schedule 15.12.2020