2015-10-05 4 views
20

Я написал службу Windows, которая работает в Framework 4.0 и работает в VS 2015. Я также создал проект установки (бесплатная версия Installshield).Ошибка 1001 при установке пользовательской службы Windows

У меня нет сервиса под службы services.msc после того, как я установил его, поэтому, согласно некоторым другим сообщениям, я должен был отметить первичный вывод в InstallShield как «класс установщика», но когда я это сделаю, я получаю сообщение об ошибке 1001, когда я запустите setup.exe.

В этом документе post указано, что «Код ошибки 1001 ВСЕГДА означает сбой в пользовательском действии класса Installer». и что я не должен использовать пользовательские действия. На данный момент я не использую никаких пользовательских действий.

Большая часть раствора на этом сайте есть инструкции для Installshield 2010, и шаги, не работает как на моем Dev машины, а также всех клиентских машинах 2015.

ошибка появляется. Любые предложения?

РЕДАКТИРОВАТЬ:

Это событие просмотра отображается «Не удалось создать точку восстановления (процесс = C: \ Windows \ system32 \ msiexec.exe/В; Описание = Installed мое приложение Наименование .; ошибки = 0x80070422).

ответ

0

Я нашел что-то, чтобы избавиться от проблемы, но это создает новый вопрос, хотя и гораздо более простой и менее критичный.

Что послужило причиной моей проблемы в том, что я должен был удалить следующий код из AfterInstall моего ServiceInstaller в:

new ServiceController(ServiceInstaller.ServiceName).Start(); 

Это был добавлен автоматический начать свой сервис, как только он был установлен. Сейчас я просто запустил сервис вручную.

7

Если у вас установлен .NET 4.6 на вашей машине сборки, вам понадобится версия ограниченного выпуска 2015 года, чтобы избежать ошибки в версии с поддержкой InstallShield для классов установщика. (Существует множество причин ошибки 1001, поэтому это не является гарантированным исправлением.) Обратите внимание, что InstallShield 2015 Limited Edition не поддерживает сообщество Visual Studio.

+0

Благодаря. Я обновился до 2015 года, но до сих пор считаю ошибку. –

0

Эта ошибка возникает, когда целевая платформа .NET не установлена.

Если вы ориентируетесь на одну машину разработки, проверьте, действительно ли эта служба (EXE) уже запущена на этом компьютере или нет (она не должна работать).

+0

Я ориентирую фреймворк 4 и он установлен. Не работает. –

1

Поскольку я не могу прокомментировать, я просто отвечу ответом на ваш принятый ответ. Я знаю, что прошло некоторое время с тех пор, как вы задали вопрос, но здесь.

Если вы хотите автозапуск после установки, вы можете перейти к шагу 3. Настроить целевую систему. Перейдите на вкладку «Службы». Щелкните правой кнопкой мыши Службы и добавьте Сервис. Вы должны иметь возможность находить любую услугу в своем основном выпуске. После добавления вы можете выбрать различные настройки, связанные с автоматическим запуском и т. Д. Надеюсь, это поможет вам.

На стороне записки, я до сих пор ищу ответ на мой 1001.

38

У меня был точно такой же вопрос. Внезапно после обновления до VisualStudio 2013 и нового InstallShield LE и создания моих пакетов установки они потерпят неудачу с критической ошибкой 1001.

Definitive Ответ

Я нашел окончательный ответ. У вас больше не может быть установлен флажок «класс установщика», выбранный в InstallShieldLE. Вы должны снять отметку с этого предмета.

Для того, чтобы открыть это диалоговое окно, перейдите к Укажите данные приложения>Файлы и щелкните правой кнопкой мыши на основной выход и выберите Свойства.

uncheck Installer Class

Раньше вы должны были выделить его: Теперь это не должно быть выбрано

Ранее (Visual Studio 2012 и, прежде чем вы должны были иметь, что выбранный элемент или установки службы бы. Это ужасно.

Теперь вы должны перейти к следующему элементу дерева в проекте InstallShield LE и дважды щелкнуть узел Services: services node

После этого элемент «Сервис» появляется слева (я упомянул о том, какой ужасный UX и пользовательский интерфейс это все?) И щелкните правой кнопкой мыши, чтобы вы могли добавить услугу.

add service

Выберите пункт меню, который появляется, чтобы добавить услугу, и вы получите форму, которая позволяет настроить детали инсталлятора.

installation details

После того, как вы сделаете это и восстановить ваш MSI будет работать, и это будет устранить ошибку 1001.

Это была ужасная трата времени, которую могли решить оригинальные InstallShield Devs. Несчастная.

+1

Снимите флажок «Установочный класс» в диалоговом окне «Свойства» для Первичного вывода. – badikumar

+0

@badikumar Рад, что это помогло и спасибо за добавленную информацию, добавленную в ответ. – raddevus

+0

@daylight Спасибо. Я решил ошибку 1001, но я получил ошибку 1920 – GSP

3

Надеемся, это поможет некоторым из вас столкнуться с ошибкой 1001 при попытке установить службу .NET Windows с помощью установщика InstallShield 2015 LE с исходным выходом, установленным в качестве установщика.

Это известная ошибка, когда .NET 4.6 установлен на Windows, 10.

https://flexeracommunity.force.com/customer/articles/en_US/ISSUE/HOTFIX-Install-Fails-With-Error-1001-When-a-NET-Installer-Class-Component-is-Present-in-InstallShield-2015-SP1

+2

Пожалуйста, не отправляйте тот же ответ на несколько вопросов. Если одна и та же информация действительно отвечает на оба вопроса, тогда один вопрос (обычно более новый) должен быть закрыт как дубликат другого. Вы можете указать это путем [голосования, чтобы закрыть его как дубликат] (https://stackoverflow.com/help/privileges/close-questions), или, если у вас недостаточно репутации для этого, [поднять флаг] (https://stackoverflow.com/help/privileges/flag-posts), чтобы указать, что это дубликат. В противном случае отредактируйте свой ответ на этот вопрос и не просто вставьте тот же ответ в несколько мест. – DavidPostill

+0

Создана ошибка: Класс не зарегистрирован. Я не уверен, что связанное решение совместимо с InstallShield LE 2015. –

0

Я использую VS 2012 с InstallShield LE 2015 таргетинга .NET 4.5, и я должен отключить "класс Installer" чтобы он работал.

0

После некоторого рытья я обнаружил, что программа установки не справляется с этой ошибкой при попытке удалить службу (связанную с тем, что вы устанавливаете) - И (служба) больше не существует. Сценарий моего использования - Запустите установку из MVS2015 сложного решения, которое также включает службу Windows. Когда вы меняете версию решения, установщик останавливается в своих поисках, обнаружив, что ваше приложение было установлено до и не может удалить его, поскольку это другая версия. Появится диалоговое окно с сообщением об этом и выйдет ... НО ЭТО НЕ УДАЛИТЬ сервис. Теперь попытка установки или удаления завершилась с ошибкой 1001, поскольку окна не обнаружили, что служба удаляет ее.

Если у кого-то есть лучшее решение, отправьте его, но мое решение - использовать утилиту командной строки sc. sc - это утилита, которая может использоваться для управления услугами из командной строки (тип sc для справки). Поэтому я использую sc для добавления службы (по имени), а затем я могу удалить или установить как обычно. Обязательно иметь допустимый путь к бункеру в команде, но будет принят ЛЮБОЙ допустимый путь.

sc <server> create [service name] [binPath= ] <option1> <option2>... 

Пример:

sc create MyService binPath= C:\Windows\explorer.exe 
[SC] CreateService SUCCESS