Спасибо. Честно во всем признаюсь:
Цитата(fiend @ 17.12.2013, 2:48)
Цитата(Антип Од @ 16.12.2013, 12:16)
Молча себе работает, ресурсов нет у него и локализация ему совершенно не нужна.
Зачем тогда потребовались старания про locale-specific satellite assemblies?
Затем, что:
У меня на рабочей машине, где компиллятор английская Win 7, VS 2010. В итоге выходит так:
1) Английский Windows Server (пробовали 2008 и 2012 - результаты абсолютно одинаковые) - все работает (и не первый год)
2) Английский сервер с установленным русским MUI. По виду от русского ничем не отличается - все работает!!!
3) Русский сервер - Винда гасит сервис за ненадобностью
4) Русский сервер с установленным английским MUI - Винда гасит сервис за ненадобностью....
Цитата
Цитата(Антип Од @ 16.12.2013, 12:16)
И тут оказалось, что русская винда сразу после старта гасит сервер с издевательским сообщением, что этот сервис бесполезен для данного компьютера и потому остановлен.
Выяснилось, что это потому, что он не локализован. Винда ищет satellite resource DLL, не находит, и считает, что сервис для русской версии не предназначен. Останавливает его, чтоб не ел зря ресурсы.
Безосновательные утверждения. Наводящие вопросы:
1. Как выглядит "издевательское" сообщение
дословно (из Event Log)?
2. Есть ли код ошибки, stack trace, что-нибудь ещё?
3. Как сконфигурирован сервис в реестре (что там в ветке HKLM\SYSTEM\CurrentControlSet\<ServiceName>)?
1. Сообщение: Служба <service name> на <computer name> была запущена и затем остановлена. Некоторые службы автоматически останавливаются, если они не используются другими службами или программами.
2. Нету! Нет exception (сервер перехватывает их все и пишет в лог (свой, не системный) все подробности). В системном логе - нет ошибок. Написано - служба остановлена. Все точно так, как будто нажали кнопку стоп. Добавлю еще что единственное сообщение он в лог выдает. О своем старте. То есть, OnStart - вызывается. И все. Он не успевает полезть к базе данных, не успевает открыть порты и т.д.
3.
DelayedAutostart 0x0
Display Name <Sevice Name>
ErrorControl 1
ImagePath <Correct Path>
ObjectName <LocalSystem>
Start 0x2
Type 0x10
WOW64 0x1
Добавлю, что на русских серверах не работает ни под какими эккаунтами, на английских работает под любыми, у которых прав хватает.
Цитата
Цитата(Антип Од @ 16.12.2013, 12:16)
Как правильно смастерить эту чертову DLL? Так чтоб винда находила ее как satellite resource DLL? Слышал, что надо поставить ее в GAC подписав криптоключем... но ниче пока не получается. Не могу сообразить как ее вообще создать... для проекта windows service в Visual Studio ресурсы не предусмотрены!
1. Делать ресурсы:
http://msdn.microsoft.com/en-us/library/21...(v=vs.110).aspx - в вашем случае, там будут пустые ресурсные файлы (или с тем же содержимом, что и для en-US).
2. Подписывать assembly:
http://msdn.microsoft.com/en-us/library/xc...(v=vs.110).aspx - а ещё в свойствах проекта MSVS есть отдельная закладка "Signing"
3. Ставить в GAC: см. п. 1 - gacutil /i
Спасибо... изучаю.
Цитата
Цитата(Антип Од @ 16.12.2013, 12:16)
Упорные попытки гуглить ничего не принесли, ибо находятся мегатонны инфы о том, как локализовать всякие обычные приложения...
Если "локализация ему совершенно не нужна", то зачем стараться локализовать?
Без локализации, похоже, не работает на русских версиях серверов.
Честно говоря, имея некоторый опыт работы с Windows и .NET, ни разу о такой проблеме / вопросе не слышал. Дайте, пожалуйста, ссылку почитать, где описано, почему "Винда ищет satellite resource DLL, не находит, и считает, что сервис для русской версии не предназначен."
Даю! Нашел в одном месте. Но там не написано, как эту DLL правильно оформить и обозвать.
http://stackoverflow.com/questions/6999835...windows-service Я бы, может тоже не услышал, если бы у меня на рабочем компе стояла русская версия винды. Имеются сведения, что если скомпиллировать сервис на машине с русской виндой, он будет работать и под русским и под английским серверами.
Пока что есть несколько теорий. Надо проверить на простейшем Dummy сервисе. Будет требовать локализацию, или нет... Он, вообще-то пользуется несколькими DLL-ками из сторонних проектов... Причем одна из них - точно локализована на 4 языка. Может, дело в этом. Ага, а еще эти DLL могут ссылаться на Windows.Forms...