Как скопировать файл в произвольное место при установке проекта VSIX?


Я разрабатываю расширение Visual Studio 2010 (проект VSIX) для добавления некоторых дополнительных свойств к сущностям в конструкторе Entity Framework. В дополнение к регистрации соответствующих классов для обнаружения MEF, я хотел бы, чтобы файл T4 include был скопирован в папку %ProgramFiles% Microsoft Visual Studio 10.0Common7IDEExtensionsMicrosoftEntity Framework ToolsTemplatesIncludes, когда расширение установлено, но я не знаю, как это сделать, и страница свойств VSIX, кажется, не показывает никакой опции для этого.

Итак, мой вопрос: существует ли какой-либо способ иметь данный файл копируется в заданное место при установке проекта VSIX?

1 4

1 ответ:

Используя только VSIX, нет, нет.

Все содержимое пакета VSIX во время установки просто распаковывается в ваш локальный каталог расширений - и на этом установка файлов заканчивается.

Все, что вы хотите скопировать в любом месте, вы должны иметь дело с этим вне установщика VSIX. Например-использовать другой установщик. Или, например, при первом запуске вашего плагина, где-то в пакете.Initialize(), проверьте, существуют ли соответствующие файлы в нужных местах, а если нет-перепишите их туда.

Конечно, если вы хотите писать в каталог ProgramFiles, у вас есть еще один барьер перед вами: защита UAC. Чтобы написать там, вам понадобитсядругой исполняемый файл, который ваш плагин будет запускать в elevation (и спрашивать разрешения у пользователя во время этого и т. д.), И только он сможет скопировать файлы туда. Ну, конечно, если вы с радостью не предполагаете, что все всегда запускают свои VisualStudios "как администратор" и просто игнорируют ОАК и слезы ваших пользователей.