Пакет развертывания для службы 64-битных окон в VS2010 - PullRequest
2 голосов
/ 19 января 2011

Я пытаюсь создать пакет развертывания для службы Windows, ориентированной на x64.

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

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

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

Эта служба Windows разрабатывается как часть гораздо более крупного приложения, использующего TFS для автоматизированных сборок и развертывания, непрерывной интеграции и т. Д. Поэтому ручная настройка битов двоичного файла с помощью инструментов, требующих использования графического интерфейса пользователя, - определенно нет. -нет.

Итак ... Что мне нужно знать, так это; Можно ли автоматически создать пакет развертывания для 64-разрядной службы Windows в VS2010? Если так, то как?

1 Ответ

5 голосов
/ 19 января 2011

Это произойдет, если ваш сервис или одна из сборок, которые он использует, были собраны с измененным параметром Target Platform на x86. В этом случае вы должны использовать правильную версию Installutil.exe для регистрации службы. В c: \ windows \ microsoft.net \ framework и \ framework64 их две, соответственно 32-битная и 64-битная версия. Хорошие шансы, что вам нужно первое. Если вы создали проект установки, вы бы изменили свойство TargetPlatform на x86.

Также проверьте, действительно ли вам нужно установить целевую платформу, вы делаете это, только если у вас есть зависимость от неуправляемого кода, такого как COM-сервер. Настройка C # находится в Project + Properties, вкладка Compile. По умолчанию для VS2010 используется x86, просто переключите его на AnyCPU, если у вас нет такой зависимости.

...