Escenarios de instalación de VSPackageVSPackage Setup Scenarios

Es importante diseñar al instalador de paquete VSPackage para mayor flexibilidad.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 compatibilidad con control de versiones en paralelo 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 que admiten varias versiones de Visual Studio, puede leer sobre las ventajas y los problemas de compatibilidad con las instalaciones en paralelo de Programa para la mejoraVisual Studio con compartida o en paralelo de las instalaciones 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 Programa para la mejoraVisual Studio with either shared or side-by-side installations of your VSPackage. En resumen, VSPackages side-by-side ofrecerle la máxima flexibilidad para admitir nuevas características de Programa para la mejoraVisual Studio.In short, side-by-side VSPackages give you the most flexibility to support new features of Programa para la mejoraVisual Studio.

Los escenarios descritos en este tema no son las únicas opciones, pero 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, privacidad y uso compartidoComponents, Privacy, and Sharing

Hacer que los componentes independientesMake your components independent

Después de identificar y rellenar 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 permite la máxima flexibilidad de control de versiones mediante la realización de cada unidad de componente independiente, de manera autónoma.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 cambiando 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, mezclando recursos compartidos y privados en un componente hace imposible actualizar los 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 le impida crear funcionalidad 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 VSPackage con el Visual Studio SDKVisual Studio SDK deben conservarse en un componente independiente de uno se usa para registrar el VSPackage con Visual 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 Studio. Archivos compartidos o los valores del registro van 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 Studio se incluye en un paquete de Windows Installer.In this scenario, a shared VSPackage (a single binary that supports multiple versions of Visual Studio is shipped in a Windows Installer package. Registrar con cada versión de Visual Studio se controla mediante las características seleccionables por el usuario.Registering with each version of Visual Studio is controlled by user-selectable features. También significa que cuando se asigna para separar las características, cada componente se puede seleccionar individualmente para la instalación o desinstalación, colocar el usuario en el control de integrar el VSPackage en diferentes versiones de Programa para la mejoraVisual 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 Programa para la mejoraVisual Studio. (Consulte características de Windows Installer para obtener más información sobre el uso de características en los paquetes de Windows Installer.)(See Windows Installer Features for more information on using features in Windows Installer packages.)

Instalador de VS Shared VSPackageVS Shared 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 Studio que desean integrar VSPackage.By making the Feat_VS2002 and Feat_VS2003 features visible, users can choose at install-time into which versions of Visual Studio they want the VSPackage to integrate. Los usuarios también pueden usar 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 diferentes versiones de Visual 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 Studio.

Nota

Si la columna de presentación de una característica en 0 lo oculta.Setting a feature's Display column to 0 hides it. Un valor de columna de nivel bajo, como 1, garantiza que siempre se 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. Para ilustrar la explicación, la actualización agrega compatibilidad para Visual Studio, pero podría también ser una revisión de seguridad más sencilla o paquete de servicio de corrección de errores.For the sake of discussion, the update adds support for Visual 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 cambios ya está 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, sobrescriba el componente actualizado Comp_MyVSPackage.dll y permitir que los usuarios a optar por agregar la nueva característica Feat_VS2005 a su componente Comp_VS2005_Reg un sistema con la versión 1.0 ya está presente.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 VSPackage se comparte entre varias versiones de Programa para la mejoraVisual Studio, es esencial que las versiones posteriores del VSPackage mantengan la compatibilidad con versiones anteriores de Visual Studio.Whenever a VSPackage is shared among multiple versions of Programa para la mejoraVisual Studio, it is essential that subsequent releases of the VSPackage maintain backward compatibility with prior versions of Visual Studio. Cuando no se puede mantener la compatibilidad con versiones anteriores, debe usar VSPackages side-by-side y privados.Where you cannot maintain backward compatibility, you must use side-by-side, private VSPackages. Para obtener más información, consulte que admiten varias versiones de Visual Studio.For more information, see Supporting Multiple Versions of Visual Studio.

Instalador de Visual Studio comparten VS Package UpdateVS Shared VS Package Update installer

Este escenario presenta a un nuevo instalador de VSPackage, que aprovecha la compatibilidad del instalador de Windows para las actualizaciones menores.This scenario presents a new VSPackage installer, taking advantage of Windows Installer's support for minor upgrades. Los usuarios simplemente instalar 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 instalador 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 las actualizaciones menores de esta manera es que no es necesario pasar por el trabajo de desarrollo de un instalador de actualización y un instalador de 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. Una instalador realiza dos tareas.One installer does both jobs. Una revisión de seguridad o service pack es posible que en su lugar, aproveche 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 Studio.This scenario presents two VSPackage installers — one for each version of Visual Studio .NET 2003 and Visual Studio. Cada instalador instala un side-by-side o private, VSPackage (es decir, en concreto se compila y se instala una versión concreta de Visual Studio).Each installer installs a side-by-side, or private, VSPackage (one that is specifically built and installed for a particular version of Visual Studio). Cada VSPackage está en su propio componente.Each VSPackage is in its own component. Por lo tanto, cada uno de ellos pueden realizarse individualmente con revisiones o mantenimiento de versiones.Consequently, each can be individually serviced with patches or maintenance releases. Dado que la DLL de VSPackage ahora es específica de la versión, es seguro incluir la información de registro en el mismo componente que 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.

Instalador de VS Side-by-Side VS PackageVS Side-by-Side VS Package 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 segundo instalador acaba incrementa 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 se desinstala uno de los VSPackages, seguirá siendo el código compartido para el VSPackage del otro.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: Side-by-Side VSPackage UpdateScenario 4: Side-by-Side VSPackage Update

En este escenario, el VSPackage para Visual Studio tuvieron una vulnerabilidad de seguridad y que necesita para realizar una actualización.In this scenario, your VSPackage for Visual Studio suffered from a security vulnerability and you need to issue an update. Como se muestra en el escenario 2, puede crear un nuevo archivo .msi que actualiza una instalación existente para incluir la corrección de seguridad, así como implementar las instalaciones nuevas con la correcció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 recompile para incluir la correcció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 de nuevo el número de versión de ensamblado sobrescribe la versión anterior, lo que provocará Programa para la mejoraVisual Studio para cargar el ensamblado fijo.The registration information for the new assembly version number overwrites the previous version, causing Programa para la mejoraVisual Studio to load the fixed assembly.

Instalador de VS Side-by-Side VS Package UpdateVS Side-by-Side VS Package Update installer

Para obtener más información sobre la implementación de ensamblados en paralelo, vea lo que simplifica la implementación y resolver infierno de DLL con .NET Framework.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

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