Я видел множество вопросов в этом направлении, но они либо остались без ответа, либо ответы не работают / не применимы к моей ситуации.
Я сделал базовый проект службы Windows на C # (используя VS 11 Dev Preview, но, вероятно, он должен быть похож в 2010 году). Компилируется просто отлично. Когда я запускаю InstallUtil.exe на скомпилированном .exe, он выдает следующее в командной строке:
Запуск транзакционной установки.
Начало фазы установки установки. Смотрите содержание
файл журнала для C: \ Users \ gzak \ Documents \ Visual Studio
11 Ход выполнения сборки \ Projects \ mysol \ myproj \ bin \ Debug \ myproj.exe.
Файл находится в C: \ Users \ gzak \ Documents \ Visual Studio
11 \ Проекты \ MySOL \ MYPROJ \ Bin \ Debug \ myproj.InstallLog. Установка
сборка 'C: \ Users \ gzak \ Documents \ Visual Studio
11 \ Проекты \ MySOL \ MYPROJ \ Bin \ Debug \ MYPROJ.EXE. Затронутые параметры
являются: logtoconsole = logfile = C: \ Users \ gzak \ Documents \ Visual
Studio 11 \ Projects \ mysol \ myproj \ bin \ Debug \ myproj.InstallLog
assemblypath = C: \ Users \ gzak \ Documents \ Visual Studio
11 \ Проекты \ MySOL \ MYPROJ \ Bin \ Debug \ MYPROJ.EXE
Фаза установки успешно завершена, а фаза фиксации -
начало. Смотрите содержимое файла журнала для
C: \ Users \ gzak \ Documents \ Visual Studio
11 Ход выполнения сборки \ Projects \ mysol \ myproj \ bin \ Debug \ myproj.exe.
Файл находится в C: \ Users \ gzak \ Documents \ Visual Studio
11 \ Проекты \ MySOL \ MYPROJ \ Bin \ Debug \ myproj.InstallLog. совершение
сборка 'C: \ Users \ gzak \ Documents \ Visual Studio
11 \ Проекты \ MySOL \ MYPROJ \ Bin \ Debug \ MYPROJ.EXE. Затронутые параметры
являются: logtoconsole = logfile = C: \ Users \ gzak \ Documents \ Visual
Studio 11 \ Projects \ mysol \ myproj \ bin \ Debug \ myproj.InstallLog
assemblypath = C: \ Users \ gzak \ Documents \ Visual Studio
11 \ Проекты \ MySOL \ MYPROJ \ Bin \ Debug \ MYPROJ.EXE
Фаза фиксации успешно завершена.
Транзакционная установка завершена.
Похоже, что все устанавливается правильно, но в списке служб это не отображается, и я пробовал много раз и много обновлений; это просто не там. Пара вещей, на которые стоит обратить внимание:
- myproj.exe имеет зависимость от some.dll, который также находится в выходной папке (в случае, если наличие зависимости каким-либо образом требует другого процесса).
- Я пробовал это с добавлением класса установщика в проект и без него. Нужно ли добавлять его в отдельный проект, чтобы он работал? В командной строке я получаю другое сообщение, в котором жалуется на отсутствие установщика, если я не добавляю класс установщика в проект, и, так как он исчезает, когда я это делаю, я полагаю, что он работает ... Или нет?
Кроме того, есть ли альтернативы службам Windows? Если их вообще так трудно использовать, черт возьми, я бы предпочел просто вручную настроить мою программу на запуск при старте старым способом и оставить ее запущенной без прохождения через диспетчер служб вообще. По крайней мере, таким образом я могу запустить / остановить его в отладчике по желанию. Microsoft действительно отбросила мяч сюда.