Ошибка 1001 при установке пользовательской службы Windows
Я написал Windows-сервис, работающий на Framework 4.0 и работающий в VS 2015. Я также создал проект установки (бесплатная версия Installshield).
Мой сервис не показывался в services.msc после того, как я его установил, поэтому в соответствии с некоторыми другими публикациями мне пришлось пометить основной вывод в InstallShield как "Класс установщика", но когда я это сделал, при запуске установки я получил ошибку 1001. EXE.
В этом сообщении говорится, что "код ошибки 1001 ВСЕГДА означает сбой в настраиваемом действии класса установщика". и что я не должен использовать пользовательские действия. Я не использую никаких пользовательских действий в данный момент.
Большинство решений на этом сайте содержат инструкции для Installshield 2010, и эти шаги не работают в 2015 году.
Ошибка появляется как на моем компьютере разработчика, так и на всех клиентских компьютерах. Какие-либо предложения?
РЕДАКТИРОВАТЬ:
В средстве просмотра событий отображается "Не удалось создать точку восстановления (Process = C:\Windows\system32\msiexec.exe /V; Описание = Установленное имя моего приложения; Ошибка = 0x80070422).
8 ответов
Я нашел что-то, чтобы избавиться от проблемы, но это создает новый вопрос, хотя и гораздо более простой и менее важный.
Что вызвало мою проблему, так это то, что мне пришлось удалить следующий код из AfterInstall моего ServiceInstaller:
new ServiceController(ServiceInstaller.ServiceName).Start();
Это было добавлено для автоматического запуска моего сервиса после его установки. А пока я просто запустлю сервис вручную.
У меня была такая же проблема. Внезапно после обновления до VisualStudio 2013 и более новой версии InstallShield LE и построения моих установочных пакетов они потерпят неудачу с загадочной ошибкой 1001.
Окончательный ответ
Я нашел окончательный ответ. Вы больше не можете устанавливать флажок "класс установщика" в InstallShieldLE. Вы должны снять этот пункт.
Чтобы открыть это диалоговое окно, перейдите к " Указать данные приложения" > " Файлы", щелкните правой кнопкой мыши по первичному выходу и выберите "Свойства".
Раньше вы должны были выбрать его: теперь он не должен быть выбран
Ранее (Visual Studio 2012 и до того, как вам нужно было выбрать этот элемент, иначе установка службы не удалась бы. Это довольно ужасно.
Теперь вам нужно перейти к следующему элементу дерева в проекте InstallShield LE и дважды щелкнуть узел Services:
После этого слева появляется пункт "Службы" (я уже упоминал, что это за ужасный пользовательский интерфейс и пользовательский интерфейс?), И щелкните по нему правой кнопкой мыши, чтобы добавить службу.
Выберите пункт меню, который появляется, чтобы добавить службу, и вы получите форму, которая позволяет вам настроить детали установщика.
Как только вы сделаете это и восстановите ваш MSI, он будет работать, и это устранит ошибку 1001.
Это была ужасная трата времени, которую могли решить оригинальные разработчики InstallShield. Несчастная.
Если на вашем компьютере сборки установлен.NET 4.6, вам понадобится ограниченная версия 2015 года, чтобы избежать ошибок управления версиями с помощью поддержки InstallShield для классов установщика. (Существует много причин для ошибки 1001, поэтому это не гарантированное исправление.) Обратите внимание, что InstallShield 2015 Limited Edition не поддерживает версию Visual Studio для сообщества.
Надеемся, что это поможет некоторым из вас столкнуться с ошибкой 1001 при попытке установить.NET Windows Service с использованием проекта установщика InstallShield 2015 LE с первичным выходом, установленным в качестве установщика.
Это известная ошибка, когда.NET 4.6 установлен в Windows 10.
Поскольку я пока не могу комментировать, я просто отвечу ответом на ваш собственный принятый ответ. Я знаю, что прошло много времени с тех пор, как вы задали вопрос, но здесь идет
Если вы хотите автоматический запуск после установки, вы можете перейти к шагу 3. Настройте целевую систему. Выберите вкладку "Услуги". Щелкните правой кнопкой мыши Сервисы и добавьте Сервис. Вы должны быть в состоянии найти любую службу в вашем основном выводе. После добавления вы можете выбрать различные настройки, связанные с автоматическим запуском и так далее. Надеюсь, это поможет вам.
С другой стороны, я все еще ищу ответ на мой 1001.
После некоторых копаний я обнаружил, что установщик завершается неудачно с этой ошибкой, когда он пытается удалить службу (связанную с тем, что вы устанавливаете) - И (службы) больше нет. Мой сценарий использования - начните установку с MVS2015 комплексного решения, которое также включает службу Windows. Когда вы изменяете версию решения, установщик останавливается на своем пути, обнаруживая, что ваше приложение было установлено ранее, и не может удалить его, так как это другая версия. Появляется диалоговое окно с указанием этого и завершается.... НО ЭТО УДАЛЕНО сервис. Теперь попытка установить или удалить не удалась с ошибкой 1001, потому что Windows не находит службу для ее удаления.
Если у кого-то есть лучшее решение, пожалуйста, опубликуйте его, но мое решение - использовать утилиту командной строки sc. sc - это утилита, которую можно использовать для управления сервисами из командной строки (введите sc для справки). Поэтому я использую sc, чтобы добавить службу (по имени), а затем я могу удалить или установить как обычно. Обязательно иметь допустимый путь к корзине в команде - но ЛЮБОЙ допустимый путь будет принят.
sc <server> create [service name] [binPath= ] <option1> <option2>...
Пример:
sc create MyService binPath= C:\Windows\explorer.exe
[SC] CreateService SUCCESS
Эта ошибка возникает, когда целевой.NET Framework не установлен.
Если вы нацелены на тот же компьютер для разработки, пожалуйста, проверьте, работает ли этот сервис (EXE) на этом компьютере или нет (он не должен работать).
Я использую VS 2012 с InstallShield LE 2015, ориентированной на.NET 4.5, и мне нужно снять флажок "Класс установщика", чтобы он работал.