Deploying Office extensions via ClickTwice
Part 7 of the deployment series explains how you can use your favorite installer software to deploy your Office extensions over the web; this is the essence of ClickTwice :). If you didn't read the previous parts of the series, I’d advise that you start with Part 1 – a brief overview of the available deployment technologies.
Step 1. Create an .MSI installer
The .MSI installer can be created by using the Visual Studio setup project as well as any third party installers like WiX or InstallShield. You can find step-by-step instructions on creating the .MSI setup package in the following articles:
- For per-user deployment, see steps 1 – 6 of Deploying per-user Office extensions via an MSI installer
- For per-machine deployment, look through steps 1 – 6 of Deploying per-machine Office extensions via an MSI installer
Step 2. Open the Publish dialog
Select your project in the Solution Explorer window and choose Publish ADX Project in the project context menu (you can also find the same item in the Project menu of Visual Studio).
In the Publish dialog, switch to the MSI-based web deployment tab.
Step 3. Browse for the .MSI
Specify the path to the .MSI installer in the Installer file field. The Publish wizard reads some general info about the .MSI and fills in the fields in the upper part of the dialog.
Step 4. Set the Publishing location
By default, the Publishwizard suggests publishing your application to the MSIPublish subfolder of the project directory, see the Publishing location field. You can specify any suitable location in one of the following formats:
- To publish to a file share, enter the path using either
a UNC path: \\<server>\<folder>
or a file path: C:\<folder>\
- To publish to an FTP server, enter the path using the format:
ftp://<ftp.domain.com>/
Note! Using an http server as a publishing location is not supported.
Step 5. Set the Installation URL
You can use the Installation URL field to specify a location from which users will download the Office extension installer.
In the Installation URLedit box, enter the installation location using either a fully qualified URL in the format https://www.domain.com/<ApplicationName>, or a UNC path using the format \\<server>\<ApplicationName>.
Step 6. Set an icon (optional)
You can specify an icon in the Icon file field. The icon will be shown in the downloader window, which is displayed when the installer is downloaded from the installation location (see Step 12 for example).
Step 7. Sign the installation files
Browse for the existing certificate file (.pfx or .p12) or click New to create a new one. Enter the password of the certificate (optional).
Step 8. Preferences (optional)
To hide the Windows installer UI during installation or uninstallation, you can check the appropriate option(s) in the Preferences dialog. You can also specify a web page that provides users with additional information about available updates or some other information about your product in the Download page for updates field.
Step 9. Prerequisites (optional)
Click the Prerequisites button and select any prerequisites in the dialog window.
Add-in Express generates a setup.exe to install the specified prerequisites. When the user runs the setup.exe, it installs the prerequisites and invokes the Add-in Express downloader program to install/update your Office extension (see Step 12 for example).
Step 10. Click the Publish button
When you click the Publish button, the wizard creates all necessary files and folders in the location specified in the Publishing location field.
Let’s dwell on the files and folders.
version_info.xml contains information about all versions of your Office extension. A sample version_info.xml is shown below:
<?xml version=”1.0″ encoding=”utf-8″?>
<application name=”sampleaddin”>
<product>
<version installationUrl=”https://127.0.0.1/SampleAddinMSI” productCode=”{1123D7C8-9AEE-4B9C-B36B-38635D7D7EBF}” updateType=”bootstrapper”>
<files msi=”SampleAddinSetup”>
<file>SampleAddinSetup.msi</file>
</files>
<preferences>
<showInstallUI>true</showInstallUI>
<showUninstallUI>false</showUninstallUI>
<webPage>
</webPage>
</preferences>
</version>
</product>
</application>
All versions of your Office extension are stored in folders, which are named according to the formula <language code>\<version number of the .MSI installer>. For instance, version 1.0.0 of the sample add-in created for this article is stored in folder 1033\1.0.0, where 1033 stands for the locale English-United States.
That folder contains the following files:
- the .MSI installer, SampleAddinSetup.msi in the screenshot above
- <project name>.exe, also called the downloader; sampleaddin.exe in the screenshot; this application downloads and runs the .MSI installer
- setup.exe, the bootstrapper that installs prerequisites from the prerequisites subfolder, and then downloads and runs the downloader
Step 11. Copy files and folders
Upload the files and folders from the Publishing location folder to the location you specified in the Installation URL field.
Step 12. Running the installer
You need to supply the user with a link to one of the two executables below:
- <project name>.exe, the downloader; if there are no prerequisites
- setup.exe, the bootstrapper; if there are some prerequisites
The user clicks the link or navigates to it with either an Internet browser or Windows Explorer.
Step 13. Uninstalling the Office extension
To uninstall your product, the user goes to Control Panel – Programs and Features.
Step 14. Installing a new version of the Office extension
Please see Redeploying Office extensions via ClickTwice.
4 Comments
I have has a lot of trouble with the downloader (app.exe) first it’s not clear that the Version_info.xml file should be in the directory on the web server that is pointer to by the install_url. if not there will be a error 404 and a messagebox that can’t be debuged. Now the installer woeks on WIN7 but not on XP-SP3! an error box “parameter not valid” is shown but no information on which parameter or why? How can this be debugged?
https://dl.dropbox.com/u/33997395/error.PNG
Hi Joyce,
First of all, please pay attention to step 11.
As you can see the version_info.xml file is generated in the location that you specified in the Publishing location (file path) field. So you should copy this file and all other files to the location you specified in the Installation URL field.
>>no information on which parameter or why? How can this be debugged?
I’m sorry, this cannot be debugged. We will consider adding more details to the text of this error message in the next public build of Add-in Express .NET. Thank you for your suggestion.
To fix the issue, please see Eugene Astafiev answers in the following forum thread:
https://www.add-in-express.com/forum/read.php?FID=5&TID=9720&MID=49874#message49874
Hi,
Let’s say the donwload URL is myserver.com/download/addin
This gives this file structure:
download/addin/vesion_info.xml
download/addin/1033/1.0.0/addin-loader.exe
download/addin/1033/1.0.0/addin.msi
Now we like to publish a fix download URL for the loader which remains stable over releases, like myserver.com/download/addin/addin-loader.exe
Installation from this URL works fine, but if the plugin detects an update, it will try to download myserver.com/download/addin/1033/1.0.0/addin-loader.exe
What’s the best practice? Adding a link for download/addin/addin-loader.exe pointing to the most recent version of the actual loader file?
Thanks!
Hello William,
I don’t understand your point. Do you expect that the same downloader will be used whatever update is installed? If so, this isn’t possible. Every downloader is version-specific: to download any given update a a specific downloader is used.