Удалите файл installstate поскольку отсутствуют программы установки
Я пробовал следующие шаги:
Вывод шага 4
Запуск транзакционной установки.
Начало этапа установки.
См. содержимое файла журнала для C:\Users\myusername\Documents\Visual Studio 2010\Projects\TestService\TestService\OBJ\x86\Debug\TestService.exe прогресс сборки.
Файл находится в папке C:\Users\myusername\Documents\Visual Studio 2010\Проекты\Тес TService\TestService\OBJ\x86\Debug\TestService.InstallLog.
Установка сборки ‘C:\Users\myusername\Documents\Visual Studio 2010\Projects\TestS ervice\TestService\obj\x86\Debug\TestService.exe ‘.
Затронутыми параметрами являются:
logtoconsole =
logfile = C:\Users\myusername\Documents\Visual Studio 2010\Projects\TestService\T estService\OBJ\x86\Debug\TestService.InstallLog
assemblypath = C:\Users\myusername\Documents\Visual Studio 2010\Projects\TestServ ice\TestService\obj\x86\Debug\TestService.exe
Нет публичных инсталляторов с атрибутом RunInstallerAttribute.Yes можно найти в папке C:\Users\myusername\Documents\Visual Studio 2010\Projects\TestService\TestSe rvice\obj\x86\Debug\TestService.exe сборка.
Фаза установки успешно завершена, и фаза фиксации начало.
См. содержимое файла журнала для C:\Users\myusername\Documents\Visual Studio 2010\Projects\TestService\TestService\OBJ\x86\Debug\TestService.exe прогресс сборки.
Файл находится в папке C:\Users\myusername\Documents\Visual Studio 2010\Проекты\Тес TService\TestService\OBJ\x86\Debug\TestService.InstallLog.
Завершение сборки ‘C:\Users\myusername\Documents\Visual Studio 2010\Projects\TestS ervice\TestService\obj\x86\Debug\TestService.exe ‘.
Затронутыми параметрами являются:
logtoconsole =
logfile = C:\Users\myusername\Documents\Visual Studio 2010\Projects\TestService\T estService\OBJ\x86\Debug\TestService.InstallLog
assemblypath = C:\Users\myusername\Documents\Visual Studio 2010\Projects\TestServ ice\TestService\obj\x86\Debug\TestService.exe
Нет публичных инсталляторов с атрибутом RunInstallerAttribute.Yes можно найти в папке C:\Users\myusername\Documents\Visual Studio 2010\Projects\TestService\TestSe rvice\obj\x86\Debug\TestService.exe сборка.
Удалите файл InstallState, потому что нет инсталляторов.
Успешная фаза завершена.
Завершенная транзакция завершена.
Вывод этапа 5
Недопустимое имя службы.
Дополнительную помощь можно получить, набрав NET HELPMSG 2185.
Вам нужно открыть файл Service.cs в дизайнере, щелкните его правой кнопкой мыши и выберите пункт меню “Добавить установщик”.
Он не будет устанавливаться прямо из коробки… вам нужно сначала создать класс установщика.
Некоторая ссылка на сервис-установщик:
Довольно старый… но об этом я и говорю:
При этом автоматически создается ProjectInstaller.cs . Затем вы можете дважды щелкнуть по нему, ввести конструктор и настроить компоненты:
serviceInstaller1 имеет свойства самой службы: Description , DisplayName , ServiceName и StartType являются наиболее важными.
serviceProcessInstaller1 имеет это важное свойство: Account thas – это учетная запись, в которой будет работать служба.
Никаких публичных инсталляторов с атрибутом RunInstallerAttribute.Yes можно найти в сборке C:\Users\myusername\Documents\Visual Studio 2010\Projects\TestService\TestSe rvice\obj\x86\Debug\TestService.exe.
Похоже, у вас может не быть класса установщика в вашем коде. Это класс, который наследует от Installer , который сообщает installutil , как установить ваш исполняемый файл как службу.
P.s. У меня есть мой собственный собственный самозагружаемый/отлаживаемый шаблон службы Windows, в котором вы можете скопировать код или использовать: Отладка, самоостановка службы Windows
Вам просто нужно создать класс и добавить код ниже и добавить ссылку System.Configuration.Install.dll.
Другая возможная проблема (с которой я столкнулся):
Убедитесь, что класс ProjectInstaller public . Честно говоря, я не уверен, как именно я это сделал, но добавил обработчики событий в ProjectInstaller.Designer.cs , например:
this.serviceProcessInstaller1.BeforeInstall += new System.Configuration.Install.InstallEventHandler(this.serviceProcessInstaller1_BeforeInstall);
Я думаю, что во время автоматического процесса создания функции обработчика в ProjectInstaller.cs он изменил определение класса из
public class ProjectInstaller : System.Configuration.Install.Installer
partial class ProjectInstaller : System.Configuration.Install.Installer
public partial class ProjectInstaller : System.Configuration.Install.Installer
Я использую редакцию Visual Studio 2013 Community.
Две типичные проблемы:
- Отсутствует класс ProjectInstaller (как указал @MiguelAngelo)
- Командная строка должна “Запускать как Администратор”
Нет общедоступных инсталляторов с атрибутом RunInstallerAttribute.Yes.
Если у вас есть следующий код…
Вам может потребоваться обновить его до
Это похоже на псевдоним, измененный под обложками во время компиляции или во время выполнения, и вы получите это поведение ошибки. Вышеуказанное явное изменение в RunInstallerAttribute (true) зафиксировало его во всех наших сценариях установки на всех машинах.
После того, как вы добавите установщик проекта или службы, проверьте “старый” RunInstaller (true) и измените его на новый RunInstallerAttribute (true)
Репутация: нет
Всего: нет
Код |
protected override void OnStart(string[] args) StreamWriter writer = new StreamWriter("C:\\file.txt"); writer.WriteLine("ggg"); writer.Close(); > |
остальное оставил без изменений.однако после запуска службы файл не создается.сервис вроде нормально стартует(и сразу остнаваливается,т.к. делать ему нечего).вопрос - почему нет файла?
Репутация: 22
Всего: 118
вот прямо сгенерированный (без добавки инсталлера) хрен установится в систему.
ну да будем считать что все добавил 8)
Цитата |
сервис вроде нормально стартует(и сразу остнаваливается,т.к. делать ему нечего) |
Код |
Debugger.Launch(); //. Debugger.Break(); StreamWriter writer = new StreamWriter("C:\\file.txt"); writer.WriteLine("ggg"); writer.Close(); |
запустим дебаггер и обнаружим, что сервис-то падает на AccessDenied
с какой учетки запускаете сервис-то?
Репутация: нет
Всего: нет
Репутация: 22
Всего: 118
вы лучше код запустите что я привел.
LocalService по умолчанию доступа к FS не имеет.
короче права дай юзеру LocalService (RW) на каталог куда пишешь или запускай под другой учеткой, имеющей права.
Репутация: 14
Всего: 62
Немного офтоп.
Есть ли какие-то тонкости с установкой сервиса через installutil. Пробовал и в XP, и в Vista, эффект один и тот же: пишет, что все ок, но в списке сервисов сервис не появляется.
Репутация: 22
Всего: 118
Репутация: 5
Всего: 13
Попробуй добавить в инсталятор службы требование на разрешение доступа к твоему файлу и посмотри что скажет инсталятор когда ты попытаешься поставить свою службу. И в коде тоже требование добавь (в сборку и в метод).
Вообще это с правами трабл, мне кажется.
Репутация: 22
Всего: 118
Bogdan1024 почитай что я писал выше и не надо гипотез. инсталятору вообще пофиг на разрешения. даете права на запись и все ок будет.
Репутация: 14
Всего: 62
Цитата(jonie @ 6.7.2008, 02:16 ) |
а точно пишет-то? ты добавлял инсталлятора класс ? логи в студию кароче) |
Цитата |
Выполняется групповая операция установки. |
Начинается этап установки процедуры установки.
См. файл журнала выполнения операция для сборки D:\TestWebApplication\WindowsSer
vice1\WindowsService1\bin\Debug\WindowsService1.exe.
Данный файл находится в D:\TestWebApplication\WindowsService1\WindowsService1\bi
n\Debug\WindowsService1.InstallLog.
Выполняется установка сборки 'D:\TestWebApplication\WindowsService1\WindowsServi
ce1\bin\Debug\WindowsService1.exe'.
Затронуты следующие параметры:
logtoconsole =
assemblypath = D:\TestWebApplication\WindowsService1\WindowsService1\bin\Debu
g\WindowsService1.exe
logfile = D:\TestWebApplication\WindowsService1\WindowsService1\bin\Debug\Win
dowsService1.InstallLog
Отсутствуют общие программы установки с атрибутом RunInstallerAttribute.Yes в сб
орке D:\TestWebApplication\WindowsService1\WindowsService1\bin\Debug\WindowsServ
ice1.exe.
Этап установки успешно выполнен, начинается этап фиксации.
См. файл журнала выполнения операция для сборки D:\TestWebApplication\WindowsSer
vice1\WindowsService1\bin\Debug\WindowsService1.exe.
Данный файл находится в D:\TestWebApplication\WindowsService1\WindowsService1\bi
n\Debug\WindowsService1.InstallLog.
Выполняется фиксация сборки 'D:\TestWebApplication\WindowsService1\WindowsServic
e1\bin\Debug\WindowsService1.exe'.
Затронуты следующие параметры:
logtoconsole =
assemblypath = D:\TestWebApplication\WindowsService1\WindowsService1\bin\Debu
g\WindowsService1.exe
logfile = D:\TestWebApplication\WindowsService1\WindowsService1\bin\Debug\Win
dowsService1.InstallLog
Отсутствуют общие программы установки с атрибутом RunInstallerAttribute.Yes в сб
орке D:\TestWebApplication\WindowsService1\WindowsService1\bin\Debug\WindowsServ
ice1.exe.
Удалите файл InstallState, поскольку отсутствуют программы установки.
Этап фиксации выполнен успешно.
Репутация: нет
Всего: нет
jonie, ты прав,нет прав
тогда еще вопрос(пока модераторы спят).хочу вести логи.и проверяю,есть ли уже:
Код |
if(!System.Diagnostics.EventLog.Exists("SCServiceLogSource")) System.Diagnostics.EventLog.CreateEventSource("SCServiceLogSource", "SCServiceLog"); |
так вот когда доходит дело до второй строки - выкидывает эксепшн,мол такой(SCServiceLogSource) уже есть .
Репутация: 22
Всего: 118
Цитата |
Отсутствуют общие программы установки с атрибутом RunInstallerAttribute.Yes |
Idsa ну он и пишет даже по-русски, что у тебя нету инсталятора класса.
в двух словах тыкаешь дважды на Service1.cs (от откроет редактор). тыкаешь правой на основном окне (НЕ окне просмотра решения), там есть Add Installer в меню. Мастер создает еще один класс инсталятора, и связывает его с твоим сервисом.
4ybaka не юзаю стандартную писалку в логи. так что хз. попробуй для начала делать тоже не из сервиса)
Репутация: 14
Всего: 62
Репутация: нет
Всего: нет
Код |
if(!System.Diagnostics.EventLog.Exists("SCServiceLogSource")) System.Diagnostics.EventLog.CreateEventSource("SCServiceLogSource", "SCServiceLog"); |
Но пришлось переделывать код и в результате нужно было удалять службу, результат:
Начинается установка.
См. файл журнала выполнения операция для сборки C:\Documents and Settings\User\Мои документы\Visual Studio 2008\Projects\TestService\TestService.exe.
Данный файл находится в C:\Documents and Settings\User\Мои документы\Visual Studio 2008\Projects\TestService\TestService.InstallLog.
Выполняется удаление сборки 'C:\Documents and Settings\User\Мои документы\Visual Studio 2008\Projects\TestService\TestService.exe'.
Затронуты следующие параметры:
logtoconsole =
assemblypath = C:\Documents and Settings\User\Мои документы\Visual Studio 2008\Projects\TestService\TestService.exe
logfile = C:\Documents and Settings\User\Мои документы\Visual Studio 2008\Projects\TestService\TestService.InstallLog
Выполняется удаление источника EventLog Test Service [Server].
При выполнении программы установки System.Diagnostics.EventLogInstaller во время
установки возникло исключение.
System.InvalidOperationException: Источник 'Test Service [Server]' журнала собы
тий не может быть удален, поскольку совпадает с именем самого журнала.
При удалении из системы возникло исключение. Это исключение будет проигнорирован
о, и удаление из системы будет продолжено. Однако после завершения удаления данн
ое приложение может оказаться не полностью удаленным.
После перезагрузки и попытки заинсталить службу:
Выполняется групповая операция установки.
Начинается этап установки процедуры установки.
См. файл журнала выполнения операция для сборки C:\Documents and Settings\User\Мои документы\Visual Studio 2008\Projects\Test\Test
.exe.
Данный файл находится в C:\Documents and Settings\User\Мои докумен
ты\Visual Studio 2008\Projects\Test\Test.InstallLog.
Выполняется установка сборки 'C:\Documents and Settings\User\Мои д
окументы\Visual Studio 2008\Projects\Test\Test.exe'.
Затронуты следующие параметры:
logtoconsole =
assemblypath = C:\Documents and Settings\User\Мои документы\Vis
ual Studio 2008\Projects\Test\Test.exe
logfile = C:\Documents and Settings\User\Мои документы\Visual S
tudio 2008\Projects\Test\Test.InstallLog
Устанавливается служба Test Service [Server].
Служба Test Service [Server] успешно установлена.
Создается исходный EventLog Test Service [Server] в журнале Application.
На этапе установки возникло исключение.
System.ArgumentException: Источник Test Service [Server] уже существует на лока
льном компьютере.
Начинается этап отката процедуры установки.
См. файл журнала выполнения операция для сборки C:\Documents and Settings\User\Мои документы\Visual Studio 2008\Projects\Test\Test
.exe.
Данный файл находится в C:\Documents and Settings\User\Мои докумен
ты\Visual Studio 2008\Projects\Test\Test.InstallLog.
Выполняется откат для сборки 'C:\Documents and Settings\User\Мои д
окументы\Visual Studio 2008\Projects\Test\Test.exe'.
Затронуты следующие параметры:
logtoconsole =
assemblypath = C:\Documents and Settings\User\Мои документы\Vis
ual Studio 2008\Projects\Test\Test.exe
logfile = C:\Documents and Settings\User\Мои документы\Visual S
tudio 2008\Projects\Test\Test.InstallLog
Восстанавливается исходное состояние журнала событий для источника Test Service
[Server].
Выполняется удаление службы Test Service [Server] из системы.
Служба Test Service [Server] успешно удалена из системы.
Этап отката выполнен успешно.
UPD:
"А ларчик просто открывался": добавил ветку с именем Test Service [Server] в ../EventLog/Application и все заработало.
Если Вам понравилась атмосфера форума, заходите к нам чаще! С уважением, mr.DUDA, THandle.
Репутация: нет
Всего: нет
Код |
protected override void OnStart(string[] args) StreamWriter writer = new StreamWriter("C:\\file.txt"); writer.WriteLine("ggg"); writer.Close(); > |
остальное оставил без изменений.однако после запуска службы файл не создается.сервис вроде нормально стартует(и сразу остнаваливается,т.к. делать ему нечего).вопрос - почему нет файла?
Репутация: 22
Всего: 118
вот прямо сгенерированный (без добавки инсталлера) хрен установится в систему.
ну да будем считать что все добавил 8)
Цитата |
сервис вроде нормально стартует(и сразу остнаваливается,т.к. делать ему нечего) |
Код |
Debugger.Launch(); //. Debugger.Break(); StreamWriter writer = new StreamWriter("C:\\file.txt"); writer.WriteLine("ggg"); writer.Close(); |
запустим дебаггер и обнаружим, что сервис-то падает на AccessDenied
с какой учетки запускаете сервис-то?
Репутация: нет
Всего: нет
Репутация: 22
Всего: 118
вы лучше код запустите что я привел.
LocalService по умолчанию доступа к FS не имеет.
короче права дай юзеру LocalService (RW) на каталог куда пишешь или запускай под другой учеткой, имеющей права.
Репутация: 14
Всего: 62
Немного офтоп.
Есть ли какие-то тонкости с установкой сервиса через installutil. Пробовал и в XP, и в Vista, эффект один и тот же: пишет, что все ок, но в списке сервисов сервис не появляется.
Репутация: 22
Всего: 118
Репутация: 5
Всего: 13
Попробуй добавить в инсталятор службы требование на разрешение доступа к твоему файлу и посмотри что скажет инсталятор когда ты попытаешься поставить свою службу. И в коде тоже требование добавь (в сборку и в метод).
Вообще это с правами трабл, мне кажется.
Репутация: 22
Всего: 118
Bogdan1024 почитай что я писал выше и не надо гипотез. инсталятору вообще пофиг на разрешения. даете права на запись и все ок будет.
Репутация: 14
Всего: 62
Цитата(jonie @ 6.7.2008, 02:16 ) |
а точно пишет-то? ты добавлял инсталлятора класс ? логи в студию кароче) |
Цитата |
Выполняется групповая операция установки. |
Начинается этап установки процедуры установки.
См. файл журнала выполнения операция для сборки D:\TestWebApplication\WindowsSer
vice1\WindowsService1\bin\Debug\WindowsService1.exe.
Данный файл находится в D:\TestWebApplication\WindowsService1\WindowsService1\bi
n\Debug\WindowsService1.InstallLog.
Выполняется установка сборки 'D:\TestWebApplication\WindowsService1\WindowsServi
ce1\bin\Debug\WindowsService1.exe'.
Затронуты следующие параметры:
logtoconsole =
assemblypath = D:\TestWebApplication\WindowsService1\WindowsService1\bin\Debu
g\WindowsService1.exe
logfile = D:\TestWebApplication\WindowsService1\WindowsService1\bin\Debug\Win
dowsService1.InstallLog
Отсутствуют общие программы установки с атрибутом RunInstallerAttribute.Yes в сб
орке D:\TestWebApplication\WindowsService1\WindowsService1\bin\Debug\WindowsServ
ice1.exe.
Этап установки успешно выполнен, начинается этап фиксации.
См. файл журнала выполнения операция для сборки D:\TestWebApplication\WindowsSer
vice1\WindowsService1\bin\Debug\WindowsService1.exe.
Данный файл находится в D:\TestWebApplication\WindowsService1\WindowsService1\bi
n\Debug\WindowsService1.InstallLog.
Выполняется фиксация сборки 'D:\TestWebApplication\WindowsService1\WindowsServic
e1\bin\Debug\WindowsService1.exe'.
Затронуты следующие параметры:
logtoconsole =
assemblypath = D:\TestWebApplication\WindowsService1\WindowsService1\bin\Debu
g\WindowsService1.exe
logfile = D:\TestWebApplication\WindowsService1\WindowsService1\bin\Debug\Win
dowsService1.InstallLog
Отсутствуют общие программы установки с атрибутом RunInstallerAttribute.Yes в сб
орке D:\TestWebApplication\WindowsService1\WindowsService1\bin\Debug\WindowsServ
ice1.exe.
Удалите файл InstallState, поскольку отсутствуют программы установки.
Этап фиксации выполнен успешно.
Репутация: нет
Всего: нет
jonie, ты прав,нет прав
тогда еще вопрос(пока модераторы спят).хочу вести логи.и проверяю,есть ли уже:
Код |
if(!System.Diagnostics.EventLog.Exists("SCServiceLogSource")) System.Diagnostics.EventLog.CreateEventSource("SCServiceLogSource", "SCServiceLog"); |
так вот когда доходит дело до второй строки - выкидывает эксепшн,мол такой(SCServiceLogSource) уже есть .
Репутация: 22
Всего: 118
Цитата |
Отсутствуют общие программы установки с атрибутом RunInstallerAttribute.Yes |
Idsa ну он и пишет даже по-русски, что у тебя нету инсталятора класса.
в двух словах тыкаешь дважды на Service1.cs (от откроет редактор). тыкаешь правой на основном окне (НЕ окне просмотра решения), там есть Add Installer в меню. Мастер создает еще один класс инсталятора, и связывает его с твоим сервисом.
4ybaka не юзаю стандартную писалку в логи. так что хз. попробуй для начала делать тоже не из сервиса)
Репутация: 14
Всего: 62
Репутация: нет
Всего: нет
Код |
if(!System.Diagnostics.EventLog.Exists("SCServiceLogSource")) System.Diagnostics.EventLog.CreateEventSource("SCServiceLogSource", "SCServiceLog"); |
Но пришлось переделывать код и в результате нужно было удалять службу, результат:
Начинается установка.
См. файл журнала выполнения операция для сборки C:\Documents and Settings\User\Мои документы\Visual Studio 2008\Projects\TestService\TestService.exe.
Данный файл находится в C:\Documents and Settings\User\Мои документы\Visual Studio 2008\Projects\TestService\TestService.InstallLog.
Выполняется удаление сборки 'C:\Documents and Settings\User\Мои документы\Visual Studio 2008\Projects\TestService\TestService.exe'.
Затронуты следующие параметры:
logtoconsole =
assemblypath = C:\Documents and Settings\User\Мои документы\Visual Studio 2008\Projects\TestService\TestService.exe
logfile = C:\Documents and Settings\User\Мои документы\Visual Studio 2008\Projects\TestService\TestService.InstallLog
Выполняется удаление источника EventLog Test Service [Server].
При выполнении программы установки System.Diagnostics.EventLogInstaller во время
установки возникло исключение.
System.InvalidOperationException: Источник 'Test Service [Server]' журнала собы
тий не может быть удален, поскольку совпадает с именем самого журнала.
При удалении из системы возникло исключение. Это исключение будет проигнорирован
о, и удаление из системы будет продолжено. Однако после завершения удаления данн
ое приложение может оказаться не полностью удаленным.
После перезагрузки и попытки заинсталить службу:
Выполняется групповая операция установки.
Начинается этап установки процедуры установки.
См. файл журнала выполнения операция для сборки C:\Documents and Settings\User\Мои документы\Visual Studio 2008\Projects\Test\Test
.exe.
Данный файл находится в C:\Documents and Settings\User\Мои докумен
ты\Visual Studio 2008\Projects\Test\Test.InstallLog.
Выполняется установка сборки 'C:\Documents and Settings\User\Мои д
окументы\Visual Studio 2008\Projects\Test\Test.exe'.
Затронуты следующие параметры:
logtoconsole =
assemblypath = C:\Documents and Settings\User\Мои документы\Vis
ual Studio 2008\Projects\Test\Test.exe
logfile = C:\Documents and Settings\User\Мои документы\Visual S
tudio 2008\Projects\Test\Test.InstallLog
Устанавливается служба Test Service [Server].
Служба Test Service [Server] успешно установлена.
Создается исходный EventLog Test Service [Server] в журнале Application.
На этапе установки возникло исключение.
System.ArgumentException: Источник Test Service [Server] уже существует на лока
льном компьютере.
Начинается этап отката процедуры установки.
См. файл журнала выполнения операция для сборки C:\Documents and Settings\User\Мои документы\Visual Studio 2008\Projects\Test\Test
.exe.
Данный файл находится в C:\Documents and Settings\User\Мои докумен
ты\Visual Studio 2008\Projects\Test\Test.InstallLog.
Выполняется откат для сборки 'C:\Documents and Settings\User\Мои д
окументы\Visual Studio 2008\Projects\Test\Test.exe'.
Затронуты следующие параметры:
logtoconsole =
assemblypath = C:\Documents and Settings\User\Мои документы\Vis
ual Studio 2008\Projects\Test\Test.exe
logfile = C:\Documents and Settings\User\Мои документы\Visual S
tudio 2008\Projects\Test\Test.InstallLog
Восстанавливается исходное состояние журнала событий для источника Test Service
[Server].
Выполняется удаление службы Test Service [Server] из системы.
Служба Test Service [Server] успешно удалена из системы.
Этап отката выполнен успешно.
UPD:
"А ларчик просто открывался": добавил ветку с именем Test Service [Server] в ../EventLog/Application и все заработало.
Если Вам понравилась атмосфера форума, заходите к нам чаще! С уважением, mr.DUDA, THandle.
Репутация: нет
Всего: нет
Код |
protected override void OnStart(string[] args) StreamWriter writer = new StreamWriter("C:\\file.txt"); writer.WriteLine("ggg"); writer.Close(); > |
остальное оставил без изменений.однако после запуска службы файл не создается.сервис вроде нормально стартует(и сразу остнаваливается,т.к. делать ему нечего).вопрос - почему нет файла?
Репутация: 22
Всего: 118
вот прямо сгенерированный (без добавки инсталлера) хрен установится в систему.
ну да будем считать что все добавил 8)
Цитата |
сервис вроде нормально стартует(и сразу остнаваливается,т.к. делать ему нечего) |
Код |
Debugger.Launch(); //. Debugger.Break(); StreamWriter writer = new StreamWriter("C:\\file.txt"); writer.WriteLine("ggg"); writer.Close(); |
запустим дебаггер и обнаружим, что сервис-то падает на AccessDenied
с какой учетки запускаете сервис-то?
Репутация: нет
Всего: нет
Репутация: 22
Всего: 118
вы лучше код запустите что я привел.
LocalService по умолчанию доступа к FS не имеет.
короче права дай юзеру LocalService (RW) на каталог куда пишешь или запускай под другой учеткой, имеющей права.
Репутация: 14
Всего: 62
Немного офтоп.
Есть ли какие-то тонкости с установкой сервиса через installutil. Пробовал и в XP, и в Vista, эффект один и тот же: пишет, что все ок, но в списке сервисов сервис не появляется.
Репутация: 22
Всего: 118
Репутация: 5
Всего: 13
Попробуй добавить в инсталятор службы требование на разрешение доступа к твоему файлу и посмотри что скажет инсталятор когда ты попытаешься поставить свою службу. И в коде тоже требование добавь (в сборку и в метод).
Вообще это с правами трабл, мне кажется.
Репутация: 22
Всего: 118
Bogdan1024 почитай что я писал выше и не надо гипотез. инсталятору вообще пофиг на разрешения. даете права на запись и все ок будет.
Репутация: 14
Всего: 62
Цитата(jonie @ 6.7.2008, 02:16 ) |
а точно пишет-то? ты добавлял инсталлятора класс ? логи в студию кароче) |
Цитата |
Выполняется групповая операция установки. |
Начинается этап установки процедуры установки.
См. файл журнала выполнения операция для сборки D:\TestWebApplication\WindowsSer
vice1\WindowsService1\bin\Debug\WindowsService1.exe.
Данный файл находится в D:\TestWebApplication\WindowsService1\WindowsService1\bi
n\Debug\WindowsService1.InstallLog.
Выполняется установка сборки 'D:\TestWebApplication\WindowsService1\WindowsServi
ce1\bin\Debug\WindowsService1.exe'.
Затронуты следующие параметры:
logtoconsole =
assemblypath = D:\TestWebApplication\WindowsService1\WindowsService1\bin\Debu
g\WindowsService1.exe
logfile = D:\TestWebApplication\WindowsService1\WindowsService1\bin\Debug\Win
dowsService1.InstallLog
Отсутствуют общие программы установки с атрибутом RunInstallerAttribute.Yes в сб
орке D:\TestWebApplication\WindowsService1\WindowsService1\bin\Debug\WindowsServ
ice1.exe.
Этап установки успешно выполнен, начинается этап фиксации.
См. файл журнала выполнения операция для сборки D:\TestWebApplication\WindowsSer
vice1\WindowsService1\bin\Debug\WindowsService1.exe.
Данный файл находится в D:\TestWebApplication\WindowsService1\WindowsService1\bi
n\Debug\WindowsService1.InstallLog.
Выполняется фиксация сборки 'D:\TestWebApplication\WindowsService1\WindowsServic
e1\bin\Debug\WindowsService1.exe'.
Затронуты следующие параметры:
logtoconsole =
assemblypath = D:\TestWebApplication\WindowsService1\WindowsService1\bin\Debu
g\WindowsService1.exe
logfile = D:\TestWebApplication\WindowsService1\WindowsService1\bin\Debug\Win
dowsService1.InstallLog
Отсутствуют общие программы установки с атрибутом RunInstallerAttribute.Yes в сб
орке D:\TestWebApplication\WindowsService1\WindowsService1\bin\Debug\WindowsServ
ice1.exe.
Удалите файл InstallState, поскольку отсутствуют программы установки.
Этап фиксации выполнен успешно.
Репутация: нет
Всего: нет
jonie, ты прав,нет прав
тогда еще вопрос(пока модераторы спят).хочу вести логи.и проверяю,есть ли уже:
Код |
if(!System.Diagnostics.EventLog.Exists("SCServiceLogSource")) System.Diagnostics.EventLog.CreateEventSource("SCServiceLogSource", "SCServiceLog"); |
так вот когда доходит дело до второй строки - выкидывает эксепшн,мол такой(SCServiceLogSource) уже есть .
Репутация: 22
Всего: 118
Цитата |
Отсутствуют общие программы установки с атрибутом RunInstallerAttribute.Yes |
Idsa ну он и пишет даже по-русски, что у тебя нету инсталятора класса.
в двух словах тыкаешь дважды на Service1.cs (от откроет редактор). тыкаешь правой на основном окне (НЕ окне просмотра решения), там есть Add Installer в меню. Мастер создает еще один класс инсталятора, и связывает его с твоим сервисом.
4ybaka не юзаю стандартную писалку в логи. так что хз. попробуй для начала делать тоже не из сервиса)
Репутация: 14
Всего: 62
Репутация: нет
Всего: нет
Код |
if(!System.Diagnostics.EventLog.Exists("SCServiceLogSource")) System.Diagnostics.EventLog.CreateEventSource("SCServiceLogSource", "SCServiceLog"); |
Но пришлось переделывать код и в результате нужно было удалять службу, результат:
Начинается установка.
См. файл журнала выполнения операция для сборки C:\Documents and Settings\User\Мои документы\Visual Studio 2008\Projects\TestService\TestService.exe.
Данный файл находится в C:\Documents and Settings\User\Мои документы\Visual Studio 2008\Projects\TestService\TestService.InstallLog.
Выполняется удаление сборки 'C:\Documents and Settings\User\Мои документы\Visual Studio 2008\Projects\TestService\TestService.exe'.
Затронуты следующие параметры:
logtoconsole =
assemblypath = C:\Documents and Settings\User\Мои документы\Visual Studio 2008\Projects\TestService\TestService.exe
logfile = C:\Documents and Settings\User\Мои документы\Visual Studio 2008\Projects\TestService\TestService.InstallLog
Выполняется удаление источника EventLog Test Service [Server].
При выполнении программы установки System.Diagnostics.EventLogInstaller во время
установки возникло исключение.
System.InvalidOperationException: Источник 'Test Service [Server]' журнала собы
тий не может быть удален, поскольку совпадает с именем самого журнала.
При удалении из системы возникло исключение. Это исключение будет проигнорирован
о, и удаление из системы будет продолжено. Однако после завершения удаления данн
ое приложение может оказаться не полностью удаленным.
После перезагрузки и попытки заинсталить службу:
Выполняется групповая операция установки.
Начинается этап установки процедуры установки.
См. файл журнала выполнения операция для сборки C:\Documents and Settings\User\Мои документы\Visual Studio 2008\Projects\Test\Test
.exe.
Данный файл находится в C:\Documents and Settings\User\Мои докумен
ты\Visual Studio 2008\Projects\Test\Test.InstallLog.
Выполняется установка сборки 'C:\Documents and Settings\User\Мои д
окументы\Visual Studio 2008\Projects\Test\Test.exe'.
Затронуты следующие параметры:
logtoconsole =
assemblypath = C:\Documents and Settings\User\Мои документы\Vis
ual Studio 2008\Projects\Test\Test.exe
logfile = C:\Documents and Settings\User\Мои документы\Visual S
tudio 2008\Projects\Test\Test.InstallLog
Устанавливается служба Test Service [Server].
Служба Test Service [Server] успешно установлена.
Создается исходный EventLog Test Service [Server] в журнале Application.
На этапе установки возникло исключение.
System.ArgumentException: Источник Test Service [Server] уже существует на лока
льном компьютере.
Начинается этап отката процедуры установки.
См. файл журнала выполнения операция для сборки C:\Documents and Settings\User\Мои документы\Visual Studio 2008\Projects\Test\Test
.exe.
Данный файл находится в C:\Documents and Settings\User\Мои докумен
ты\Visual Studio 2008\Projects\Test\Test.InstallLog.
Выполняется откат для сборки 'C:\Documents and Settings\User\Мои д
окументы\Visual Studio 2008\Projects\Test\Test.exe'.
Затронуты следующие параметры:
logtoconsole =
assemblypath = C:\Documents and Settings\User\Мои документы\Vis
ual Studio 2008\Projects\Test\Test.exe
logfile = C:\Documents and Settings\User\Мои документы\Visual S
tudio 2008\Projects\Test\Test.InstallLog
Восстанавливается исходное состояние журнала событий для источника Test Service
[Server].
Выполняется удаление службы Test Service [Server] из системы.
Служба Test Service [Server] успешно удалена из системы.
Этап отката выполнен успешно.
UPD:
"А ларчик просто открывался": добавил ветку с именем Test Service [Server] в ../EventLog/Application и все заработало.
Если Вам понравилась атмосфера форума, заходите к нам чаще! С уважением, mr.DUDA, THandle.
I have tried to create a custom action for a Visual Studio Installer project to modify the permissions for a config file.
The Installer.cs is as follows:
Then I add the Primary Output (Installer into the Commit section of the setup project's Custom Actions.
When I run the installer, I get the following error:
Scouring the web I've found a few examples of similar experiences, but none of the solutions offered have worked for me.
10 Answers 10
The problem is that the MSI infrastructure is looking for the installation state file which is usually created during the Install phase. If the custom action does not participate in the Install phase, no file is created.
The solution is to add the custom action to both the Install and the Commit phases, although it does nothing during the install phase.
This isn't accurate. You don't have to add anything to both phases. I added an update at that link. I used just the Install override in the Installer class after adding the "Primary output" to each section in the Custom Actions. I set my CustomActionData value on the Install phase Primary output properties. I ignored the other phases altogether in my Installer class - they don't need to be overridden and will just do what they always did. I got the same error as the OP until I added a closing quote around one of my textbox names that was in my CustomActionData string that was missing.
I had this problem when I didn't specify a custom action in my installer project for all four overrides (Install, Uninstall, Commit, and Rollback). As soon as I specified my project output as the custom action for all four, the issue went away.
The only overrides in my installer class that did anything were Commit and Uninstall; I think that Install was in charge of creating the InstallState file in the first place, and since it was never called the InstallState file was never created.
I did actually try this when I received your post, but IIRC it didn't work. I had all 4 overrides covered (albeit a couple did very little) but the problem remained. Unfortunately, I abandoned this project (long story) about a week after posting, so it's unlikely I'll ever go back and report a solution.
Worked for me just adding the project output to the Install custom action (not unintall or rollback). I was getting the error 1001 when it was only added to Commit custom action.
Make sure that your custom action follows the tutorial recommendations.
This was the case for me, in Custom Action Properties, the property named InstallerClass was set to True, when I needed it to execute - so changing it to False did the trick for me.
Had the error the OP had and changing the InstallerClass property had no effect, for me - either before or after I fixed my real issue-which was fixing a missing quote in my CustomActionData value.
Sometimes, "Debugger.Launch();" is put at those overwritten functions for debugging. If you build the installer with the statement there, and during your installation, a dialog will popup to ask you whether debug is needed, if you press 'cancel debugging', you'll get this error dialog. Because you added the 'Debugger.Launch()' at your function, then that function will be considered as 'missed' by installer. So, don't forget to remove it.
The debugger statement in the code I shamelessly copied wasn't even causing a popup, just a miserable failure leading to "InstallState not found" for no apparent reason wasting a couple of hours of my life.
Here I am looking at this thread over and over; thinking no way, It can't be that. Thank you so much!
Try installing this as in an administrator command prompt. This worked for me.!
For me, the issue was as simple as just adding a closing quote around one of the textbox names in my CustomActionData string.
I was using the "Textboxes (A)" and "Textboxes (B)" windows in the User Interface section. A has 1 box, EDITA1 , where I get the path to a file, and B has 2 boxes, EDITB1 and EDITB2 , for some database parameters. My CustomActionData string looked like this:
It should have been:
(closing quote on [EDITB1] )
I used the Install override in my Installer class to get the values (i.e. string filepath = Context.Parameters["filepath"]; ) and used it to write them to an INI file for my app to use once installed. I put the "Primary output" under all of the phases in the Custom Actions GUI, but did nothing with the InstallerClass property (default: True) and only set the CustomActionData string on the Install one. I didn't even include override functions in my Installer class, since I was doing nothing that was custom in the other phases.
Читайте также: