[This documentation is for preview only, and is subject to change in later releases. Blank topics are included as placeholders.]
You can deploy multiple Office solutions in a single package to simplify the installation and update process. This requires that you modify and re-sign the application and deployment manifests after publishing and before installation.
This walkthrough illustrates the following tasks:
Creating two Office solutions to deploy, and one Office solution as the installer project.
Modifying the application manifest of the installer project to install two Office solutions.
Re-signing the application and deployment manifests.
Note |
|---|
|
Your computer might show different names or locations for some of the Visual Studio user interface elements in the following instructions. The Visual Studio edition that you have and the settings that you use determine these elements. For more information, see Working with Settings.
|
You need the following components to complete this walkthrough:
Creating Multiple Office Solutions
Start by creating three Office projects, one of which functions as the installer. The other two will be deployed to the end user computer.
To create and develop new Word, Outlook, and Excel projects
Create a Word document-level project for the .NET Framework 3.5. Name the project ContosoInstaller, and save the project to the %USERPROFILE%\Documents\Visual Studio 10\Projects directory.
The ContosoInstaller project will be used as the installer. For more information, see How to: Create Office Projects in Visual Studio.
In the ContosoInstaller solution, add an Outlook application-level project with the name ContosoOutlookAddIn, and add your code to the Outlook project.
In the ContosoInstaller solution, add an Excel document-level project with the name ContosoExcelWorkbook, and add your code to the Excel project.
Publishing the Office Solutions
Use the Publish Wizard or the Project Page of the Project Designer to publish the Office solutions to the development computer.
To publish the Word, Outlook, and Excel projects
Publish the ContosoInstaller project to c:\publish folder. For more information, see How to: Deploy an Office Solution by Using ClickOnce.
Publish the ContosoOutlookAddIn project to the c:\publish folder.
Publish the ContosoExcelWorkbook project to the c:\publish folder.
Modifying the Application Manifest
Use the XML editor in Visual Studio to add install dependencies, entry points and assemblies to the application manifest.
Adding the Install Dependencies
Modify the application manifest to install the ContosoOutlookAddin and ContosoExcelWorkbook assemblies, and remove references to the ContosoInstaller assembly.
To add installation dependencies to the application manifest
From the c:\publish\Application Files folder, move the contents of the ContosoOutlookAddIn_1_0_0_0 and ContosoExcelWorkbook_1_0_0_0 directories to the ContosoInstaller_1_0_0_0 directory.
Open the ContosoInstaller.dll.manifest, ContosoOutlookAddIn.dll.manifest, and ContosoExcelWorkbook.dll.manifest files in an XML editor.
From the ContosoOutlookAddIn.dll.manifest file, copy the ContosoOutlookAddIn.dll install dependency. The following code is what you should be looking for: only the <dsig:DigestValue> element will vary.
<dependency>
<dependentAssembly
dependencyType="install"
allowDelayedBinding="true"
codebase="ContosoOutlookAddIn.dll"
size="10240">
<assemblyIdentity
name="ContosoOutlookAddIn"
version="1.0.0.0"
language="neutral"
processorArchitecture="msil" />
<hash>
<dsig:Transforms>
<dsig:Transform Algorithm=
"urn:schemas-microsoft-com:HashTransforms.Identity" />
</dsig:Transforms>
<dsig:DigestMethod Algorithm=
"http://www.w3.org/2000/09/xmldsig#sha1" />
<dsig:DigestValue>i4e</dsig:DigestValue>
</hash>
</dependentAssembly>
</dependency>
In the ContosoInstaller.dll.manifest file, paste the ContosoOutlookAddIn.dll install dependency at the end of the dependency section.
From the ContosoExcelWorkbook.dll.manifest file, copy the ContosoExcelWorkbook.dll install dependency. The following code resembles what you should be looking for: only the <dsig:DigestValue> element will vary.
<dependency>
<dependentAssembly
dependencyType="install"
allowDelayedBinding="true"
codebase="ContosoExcelWorkbook.dll"
size="12800">
<assemblyIdentity
name="ContosoExcelWorkbook"
version="1.0.0.0"
language="neutral"
processorArchitecture="msil" />
<hash>
<dsig:Transforms>
<dsig:Transform Algorithm=
"urn:schemas-microsoft-com:HashTransforms.Identity" />
</dsig:Transforms>
<dsig:DigestMethod Algorithm=
"http://www.w3.org/2000/09/xmldsig#sha1" />
<dsig:DigestValue>i4e</dsig:DigestValue>
</hash>
</dependentAssembly>
</dependency>
In the ContosoInstaller.dll.manifest file, paste the ContosoOutlookAddIn.dll install dependency at the end of the dependency section.
In the ContosoInstaller.dll.manifest file, remove the ContosoInstaller.dll install dependency.
Adding the Entrypoints
Modify the application manifest to load the ContosoOutlookAddin and ContosoExcelWorkbook assemblies into the <vstav3> namespace.
To add the entrypoints in the vstav3 namespace to the application manifest
In the ContosoInstaller.dll.manifest file, remove the text between the <vstav3:entryPointsCollection> and </vstav3:entryPointsCollection> elements.
From the ContosoOutlookAddIn.dll.manifest file, copy the text between the <vstav3:entryPointsCollection> and </vstav3:entryPointsCollection> elements. The following code resembles what you should be looking for.
<vstav3:entryPoints>
<vstav3:entryPoint
class="ContosoOutlookAddIn.ThisAddIn">
<assemblyIdentity
name="ContosoOutlookAddIn"
version="1.0.0.0"
language="neutral"
processorArchitecture="msil" />
</vstav3:entryPoint>
</vstav3:entryPoints>
In the ContosoInstaller.dll.manifest file, paste the code after the <vstav3:entryPointsCollection> element.
Add the id attribute to the <vstav3:entryPoints> element to differentiate this entrypoint from others.
<vstav3:entryPoints id="ContosoOutlook">
From the ContosoExcelWorkbook.dll.manifest file, copy the text between the <vstav3:entryPointsCollection> and </vstav3:entryPointsCollection> elements. The following code resembles what you should be looking for.
<vstav3:entryPoints>
<vstav3:entryPoint
class="ContosoExcelWorkbook.ThisWorkbook">
<assemblyIdentity
name="ContosoExcelWorkbook"
version="1.0.0.0"
language="neutral"
processorArchitecture="msil" />
</vstav3:entryPoint>
<vstav3:entryPoint
class="ContosoExcelWorkbook.Sheet1">
<assemblyIdentity
name="ContosoExcelWorkbook"
version="1.0.0.0"
language="neutral"
processorArchitecture="msil" />
</vstav3:entryPoint>
<vstav3:entryPoint
class="ContosoExcelWorkbook.Sheet2">
<assemblyIdentity
name="ContosoExcelWorkbook"
version="1.0.0.0"
language="neutral"
processorArchitecture="msil" />
</vstav3:entryPoint>
<vstav3:entryPoint
class="ContosoExcelWorkbook.Sheet3">
<assemblyIdentity
name="ContosoExcelWorkbook"
version="1.0.0.0"
language="neutral"
processorArchitecture="msil" />
</vstav3:entryPoint>
</vstav3:entryPoints>
In the ContosoInstaller.dll.manifest file, paste the code after the <vstav3:entryPointsCollection> element.
Add the id attribute to the <vstav3:entryPoints> element to differentiate this entry point from other entry points.
<vstav3:entryPoints id="ContosoExcel">
Adding the assemblies
Modify the application manifest to load the ContosoOutlookAddin and ContosoExcelWorkbook assemblies into the <vstov4> namespace.
To add the assemblies to the vstov4 namespace in the application manifest
In the ContosoInstaller.dll.manifest file, remove any text between the <vstov4:customizations xmlns:vstov4="urn:schemas-microsoft-com:vsto.v4"> and </vstov4:customizations> elements.
In the ContosoOutlookAddIn.dll.manifest file, copy the text between the <vstov4:customizations xmlns:vstov4="urn:schemas-microsoft-com:vsto.v4"> and </vstov4:customizations> elements. The following code is what you should be looking for.
<vstov4:customization>
<vstov4:appAddIn
application="Outlook"
loadBehavior="3"
keyName="ContosoOutlookAddIn">
<vstov4:friendlyName>
ContosoOutlookAddIn
</vstov4:friendlyName>
<vstov4:description>
ContosoOutlookAddIn - Outlook add-in created with
Visual Studio Tools for Office
</vstov4:description>
</vstov4:appAddIn>
</vstov4:customization>
In the ContosoInstaller.dll.manifest file, paste the code after the <vstov4:customizations xmlns:vstov4="urn:schemas-microsoft-com:vsto.v4"> element.
Add the id attribute to the <vstav3:customization> element to differentiate this customization from others. This id is the same id that was added to the <vstav3:entryPoints> element in the previous procedure.
<vstov4:customization id="ContosoOutlook">
From the ContosoExcelWorkbook.dll.manifest file, copy the text between the <vstov4:customizations xmlns:vstov4="urn:schemas-microsoft-com:vsto.v4"> and </vstov4:customizations> elements. The following code resembles what you should be looking for: only the <solutionId> element will vary.
<vstov4:customization>
<vstov4:document
solutionId="73e" />
</vstov4:customization>
In the ContosoInstaller.dll.manifest file, paste the code after the <vstov4:customizations xmlns:vstov4="urn:schemas-microsoft-com:vsto.v4"> element.
Add the id attribute to the <vstov4:customizations xmlns:vstov4="urn:schemas-microsoft-com:vsto.v4"> element to differentiate this customization from others. This id is the same id that was added to the <vstav3:entryPoints> element in the previous procedure.
<vstov4:customization id="ContosoExcel">
Sign the application and deployment manifests with a certificate. This ensures that the files have not been tampered with.
To re-sign the application and deployment manifests
Copy the ContosoInstaller_TemporaryKey.pfx certificate file from the %USERPROFILE%\Documents\Visual Studio 10\Projects\ContosoInstaller\ContosoInstaller solution directory into the c:\publish\Application Files\ContosoInstaller_1_0_0_0directory.
Open the Visual Studio command prompt.
Change to the c:\publish\Application Files\ContosoInstaller_1_0_0_0 directory.
Sign the modified application manifest with the following command:
mage -sign ContosoInstaller.dll.manifest -certfile ContosoInstaller_TemporaryKey.pfx
The message "ContosoInstaller.dll.manifest successfully signed" appears.
Change to the c:\publish directory.
Update and sign the deployment manifest with the following command:
mage -update ContosoInstaller.vsto -appmanifest "Application Files\ContosoInstaller_1_0_0_0\ContosoInstaller.dll.manifest" -certfile "Application Files\ContosoInstaller_1_0_0_0\ContosoInstaller_TemporaryKey.pfx"
The message "ContosoInstaller.vsto successfully signed" appears.
Copy the ContosoInstaller.vsto file to the c:\publish\Application Files\ContosoInstaller_1_0_0_0 directory.
Testing the Multi-Project Deployment
The following procedure ensures that the manifest installs the Outlook add-in and the Excel workbook.
To test the multi-project deployment
Copy the c:\publish directory to a test computer.
Run the Setup program to install the multi-project deployment.
The Microsoft Office Customization Installer appears.
Click Install.
The Microsoft Office Customization Installer dialog box shows the following message: "The Microsoft Office customization was successfully installed."
Open Outlook to verify that the add-in works.
Open the Excel workbook file to verify that the document-level customization works.
Verify that the multi-project deployment has a single entry in the list of installed applications.
The Add/Remove Programs in Windows XP or Programs and Features in Windows Vista shows ContosoInstaller.
Cleaning up the Publish Directory
The following procedure removes any unnecessary files from the publish directory.
To clean up the publish directory
Remove the following files from the c:\publish\Application Files\ContosoInstaller_1_0_0_0 directory.
ContosoExcelWorkbook.dll.manifest
ContosoExcelWorkbook.vsto
ContosoInstaller.dll.deploy
ContosoInstaller.docx
ContosoInstaller_TemporaryKey.pfx
ContosoOutlookAddIn.dll.manifest
ContosoOutlookAddIn.vsto
Remove the following files from the c:\publish directory.
Tasks
Concepts
Other Resources