Я написал графический интерфейс (назовите его MyGUI) для развертывания ClickOnce на любом данном клиентском сайте. Этот графический интерфейс устанавливает и настраивает службу Windows (MyService), используя метод, описанный here @Marc Gravell. Вот мой код, запускаемый изнутри MyGUI, который содержит ссылку на MyService:
using (var inst = new AssemblyInstaller(typeof(MyService.Program).Assembly, new string[] { })) {
IDictionary state = new Hashtable();
inst.UseNewContext = true;
try {
if (uninstall) {
inst.Uninstall(state);
} else {
inst.Install(state);
inst.Commit(state);
}
} catch {
try {
inst.Rollback(state);
} catch { }
throw;
}
}
Обратите внимание на первую строку: я беру сборку для MyService и устанавливаю ее. Проблема в том, что, как я сделал развертывание, я фактически ссылаюсь на файл EXE службы из папки приложения графического интерфейса. Так что теперь служба запускается и начинает искать вещи в файле MyService.config и не может их найти, потому что она находится в папке чьего-либо приложения, и присутствует только файл MyGUI.config графического интерфейса.
Итак, как мне сделать MyService.config доступным для службы?