Escenarios de instalación de VSPackageVSPackage Setup Scenarios

Es importante para el instalador de VSPackage la flexibilidad de diseño.It is important to design your VSPackage installer for flexibility. Por ejemplo, es posible que deba liberar una revisión de seguridad en el futuro, o podría cambiar una estrategia de negocio que requiere la compatibilidad con versiones de side-by-side exhaustiva.For example, you might need to release a security patch in the future, or you might change a business strategy that requires thorough side-by-side versioning support.

En compatibilidad con varias versiones de Visual Studio, puede leer sobre las ventajas y los problemas de compatibilidad con las instalaciones en paralelo de Visual StudioVisual Studio con las instalaciones compartidas o side-by-side del paquete de VS.In Supporting Multiple Versions of Visual Studio, you can read about the advantages and issues of supporting side-by-side installations of Visual StudioVisual Studio with either shared or side-by-side installations of your VSPackage. En resumen, VSPackages side-by-side ofrecen la máxima flexibilidad para admitir nuevas características de Visual StudioVisual Studio.In short, side-by-side VSPackages give you the most flexibility to support new features of Visual StudioVisual Studio.

Los escenarios descritos en este tema no son las únicas opciones, pero que se presentan como sugieren procedimientos recomendados.The scenarios discussed in this topic are not your only choices, but they are presented as suggested best practices.

Componentes, la privacidad y el uso compartidoComponents, Privacy, and Sharing

Hacer que sus componentes independientesMake your components independent

Una vez que se identifican y rellena un componente, asignar un GUIDe implementar el componente, no se puede cambiar su composición.Once you identify and populate a component, assign a GUID, and deploy the component, you cannot change its composition. Si cambia la composición de un componente, el componente resultante debe ser un nuevo componente con un nuevo GUID.If you do change a component's composition, the resulting component must be a new component with a new GUID. Dados estos hechos, se ofrece la máxima flexibilidad de control de versiones mediante la realización de cada unidad independiente, independiente de componente.Given these facts, the greatest versioning flexibility is afforded by making each component independent, self-reliant unit. Para obtener más información acerca de las reglas que rigen los componentes, consulte cambiar el código de componente y ¿qué ocurre si el componente de las reglas se dividen?.For more information about rules governing components, see Changing the Component Code and What Happens if the Component Rules Are Broken?.

No mezcle los recursos compartidos y privados en un componenteDo not mix shared and private resources in a component

Recuento de referencias se produce en el nivel de componente.Reference counting occurs on the component level. Por lo tanto, la combinación de recursos compartidos y privados de un componente sería imposible actualizar recursos privados, como un archivo ejecutable, sin sobrescribir también los recursos compartidos.Consequently, mixing shared and private resources in one component makes it impossible to update private resources, such as an executable file, without also overwriting shared resources. En este escenario crea problemas de compatibilidad con versiones anteriores y restringe la creación de capacidad en paralelo.This scenario creates backward-compatibility issues and restricts you from creating side-by-side capability.

Por ejemplo, los valores del registro se usan para registrar el paquete de VS con el Visual Studio SDKVisual Studio SDK debe mantenerse en un componente independiente de se utilizó para registrar el paquete de VS con Visual StudioVisual Studio.For example, registry values used to register your VSPackage with the Visual Studio SDKVisual Studio SDK should be kept in a component separate from one used to register your VSPackage with Visual StudioVisual Studio. Archivos compartidos o valores del registro, vaya en otro componente.Shared files or registry values go in yet another component.

Escenario 1: Compartido VSPackageScenario 1: Shared VSPackage

En este escenario, un VSPackage compartido (un archivo binario único que admite varias versiones de Visual StudioVisual Studio) se incluye en un paquete de Windows Installer.In this scenario, a shared VSPackage (a single binary that supports multiple versions of Visual StudioVisual Studio) is shipped in a Windows Installer package. Registrar con cada versión de Visual StudioVisual Studio se controla mediante características seleccionables por el usuario.Registering with each version of Visual StudioVisual Studio is controlled by user-selectable features. También significa que cuando se asigna a distintos características, cada componente puede seleccionar individualmente para la instalación o desinstalación, contar con el usuario de control de integrar el VSPackage en diferentes versiones de Visual StudioVisual Studio.It also means that when assigned to separate features, each component can be selected individually for installation or uninstallation, putting the user in control of integrating the VSPackage into different versions of Visual StudioVisual Studio. (Consulte las características de Windows Installer para obtener más información sobre el uso de características en paquetes de Windows Installer.)(See Windows Installer Features for more information on using features in Windows Installer packages.)

Gráfico VS Shared VSPackageVS Shared VSPackage graphic
Instalador de VSPackage compartidoShared VSPackage installer

Como se muestra en la ilustración, los componentes compartidos se convierten en parte de la característica Feat_Common, que siempre se instala.As shown in the illustration, shared components are made part of the Feat_Common feature, which is always installed. Mediante la realización de las características de Feat_VS2002 y Feat_VS2003 visible, los usuarios pueden elegir en tiempo de instalación en las versiones de Visual StudioVisual Studio desean VSPackage para integrar.By making the Feat_VS2002 and Feat_VS2003 features visible, users can choose at install-time into which versions of Visual StudioVisual Studio they want the VSPackage to integrate. Los usuarios también pueden utilizar el modo de mantenimiento de Windows Installer para agregar o quitar características, que en este caso se agrega o quita la información de registro de VSPackage de distintas versiones de Visual StudioVisual Studio.Users can also use Windows Installer maintenance mode to add or remove features, which in this case adds or removes the VSPackage registration information from different versions of Visual StudioVisual Studio.

Nota

Si establece la columna de presentación de una característica en 0, oculta.Setting a feature's Display column to 0 hides it. Un valor de columna de nivel bajo, por ejemplo, 1, garantiza que siempre se va a instalar.A low Level column value, such as 1, ensures it will always be installed. Para obtener más información, consulte propiedad INSTALLLEVEL y tabla de características.For more information, see INSTALLLEVEL Property and Feature Table.

Escenario 2: Actualizar de VSPackage compartidaScenario 2: Shared VSPackage Update

En este escenario, se incluye una versión actualizada del instalador de VSPackage en el escenario 1.In this scenario, an updated version of the VSPackage installer in scenario 1 is shipped. En aras de la discusión, la actualización agrega compatibilidad para Visual StudioVisual Studio, pero también podría ser un más sencillo seguridad revisión o corrección de errores service pack.For the sake of discussion, the update adds support for Visual StudioVisual Studio, but it could also be a simpler security patch or bug-fix service pack. Las reglas del instalador de Windows para instalar los componentes más recientes requieren que los componentes sin modificar ya en el sistema no se vuelven a copiar.Windows Installer's rules for installing newer components require that unchanged components already on the system are not recopied. En este caso, un sistema con la versión 1.0 ya está presente se sobrescriba el Comp_MyVSPackage.dll del componente actualizado y permiten a los usuarios optar por agregar la nueva característica Feat_VS2005 con su componente Comp_VS2005_Reg.In this case, a system with version 1.0 already present will overwrite the updated component Comp_MyVSPackage.dll and let users choose to add the new feature Feat_VS2005 with its component Comp_VS2005_Reg.

Precaución

Cada vez que un paquete VSPackage se comparte entre varias versiones de Visual StudioVisual Studio, es fundamental que las versiones posteriores de VSPackage mantengan la compatibilidad con versiones anteriores de Visual StudioVisual Studio.Whenever a VSPackage is shared among multiple versions of Visual StudioVisual Studio, it is essential that subsequent releases of the VSPackage maintain backward compatibility with prior versions of Visual StudioVisual Studio. Cuando no se puede mantener la compatibilidad con versiones anteriores, debe usar VSPackages side-by-side, privadas.Where you cannot maintain backward compatibility, you must use side-by-side, private VSPackages. Para obtener más información, consulte compatibilidad con varias versiones de Visual Studio.For more information, see Supporting Multiple Versions of Visual Studio.

VS Shared VS paquete actualización imagenVS Shared VS Package Update Image
Comparten el instalador de la actualización de VSPackageShared VSPackage update installer

Este escenario presenta a un nuevo instalador de VSPackage, al aprovechar la posibilidad de soporte técnico de Windows Installer para actualizaciones menores.This scenario presents a new VSPackage installer, taking advantage of Windows Installer's support for minor upgrades. Los usuarios simplemente instalen la versión 1.1 y actualiza la versión 1.0.Users simply install version 1.1 and it upgrades version 1.0. Sin embargo, no es necesario tener la versión 1.0 en el sistema.However, it is not necessary to have version 1.0 on the system. El mismo programa de instalación instalará la versión 1.1 en un sistema sin versión 1.0.The same installer will install version 1.1 on a system without version 1.0. La ventaja para proporcionar actualizaciones secundarias de esta manera es que no es necesario pasar por el trabajo de desarrollo de un instalador de actualización y un producto completo.The advantage to provide minor upgrades in this manner is that it is not necessary to go through the work of developing an upgrade installer and a full-product installer. Un instalador realiza dos tareas.One installer does both jobs. Una revisión de seguridad o service pack es posible que en su lugar, aprovechar las ventajas de las revisiones de Windows Installer.A security fix or service pack might instead take advantage of Windows Installer patches. Para obtener más información, consulte aplicación de revisiones y actualizaciones.For more information, see Patching and Upgrades.

Escenario 3: Side-by-Side VSPackageScenario 3: Side-by-Side VSPackage

Este escenario presenta dos instaladores de VSPackage: uno para cada versión de Visual Studio .NET 2003 y Visual StudioVisual Studio.This scenario presents two VSPackage installers — one for each version of Visual Studio .NET 2003 and Visual StudioVisual Studio. Cada instalador instala un side-by-side o private, VSPackage (uno que específicamente se compila y se instala una versión concreta de Visual StudioVisual Studio).Each installer installs a side-by-side, or private, VSPackage (one that is specifically built and installed for a particular version of Visual StudioVisual Studio). Cada VSPackage está en su propio componente.Each VSPackage is in its own component. Por lo tanto, cada uno de ellos puede atenderán individualmente con revisiones o mantenimiento libera.Consequently, each can be individually serviced with patches or maintenance releases. Dado que la DLL de VSPackage ahora es específico de la versión, es seguro incluir la información de registro en el mismo componente como el archivo DLL.Because the VSPackage DLL is now version-specific, it is safe to include its registration information in the same component as the DLL.

Lado de VS - por - Gráfico de VS Package ladoVS Side-by-Side VS Package graphic
Instalador de paquete de VS Side-by-sideSide-by-side VSPackage installer

Cada instalador también incluye código que se comparte entre los dos instaladores.Each installer also includes code that is shared between the two installers. Si el código compartido se instala en una ubicación común, instalar dos archivos .msi se instalará el código compartido una sola vez.If the shared code is installed to a common location, installing both .msi files will install the shared code only once. El instalador de segundo se limita a incrementar un recuento de referencias en el componente.The second installer just increments a reference count on the component. El recuento de referencias garantiza que si uno de los VSPackages se desinstala, el código compartido permanecerá para otro VSPackage.The reference count ensures that if one of the VSPackages is uninstalled, the shared code will remain for the other VSPackage. Si el segundo VSPackage se desinstala así, se quitará el código compartido.If the second VSPackage is uninstalled as well, the shared code will be removed.

Escenario 4: Actualización de paquete de VS Side-by-SideScenario 4: Side-by-Side VSPackage Update

En este escenario, el paquete de VS para Visual Studio 2005Visual Studio 2005 han presentado un incremento de la seguridad de una vulnerabilidad y se necesita emitir el método update.In this scenario, your VSPackage for Visual Studio 2005Visual Studio 2005 suffered from a security vulnerability and you need to issue an update. Como en el escenario 2, puede crear un nuevo archivo .msi que se actualiza una instalación existente para incluir la revisión de seguridad, así como para implementar las instalaciones nuevas con la revisión de seguridad ya en su lugar.As in scenario 2, you can create a new .msi file that updates an existing installation to include the security fix, as well as deploy new installations with the security fix already in place.

En este caso, el VSPackage es un VSPackage administrado instalado en la caché de ensamblados global (GAC).In this case, the VSPackage is a managed VSPackage installed in the global assembly cache (GAC). Cuando se regenera, que incluyen la revisión de seguridad, debe cambiar la parte del número de revisión del número de versión del ensamblado.When you rebuild it to include the security fix, you must change the revision number portion of the assembly version number. La información de registro para el nuevo número de versión de ensamblado sobrescribe la versión anterior, provocando Visual StudioVisual Studio para cargar el ensamblado fijo.The registration information for the new assembly version number overwrites the previous version, causing Visual StudioVisual Studio to load the fixed assembly.

Lado de VS - por - Gráfico de VS Package Update ladoVS Side-by-Side VS Package Update graphic
Instalador de actualizaciones de paquete de VS Side-by-sideSide-by-side VSPackage update installer

Tenga en cuenta para obtener más información acerca de la implementación de ensamblados en paralelo, vea simplificar la implementación y resolver el caos de DLL con .NET Framework.Note For more information on deployment of side-by-side assemblies, see Simplifying Deployment and Solving DLL Hell with the .NET Framework.

Vea tambiénSee Also

Instalador de Windows Windows Installer
Compatibilidad con varias versiones de Visual StudioSupporting Multiple Versions of Visual Studio