Renat Tlebaldziyeu

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:

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).

Publish ADX Project menu item

In the Publish dialog, switch to the MSI-based web deployment tab.

Publish dialog

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.

Publish 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.

Preferences dialog

Step 9. Prerequisites (optional)

Click the Prerequisites button and select any prerequisites in the dialog window.

Prerequisites dialog

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.

MSIPublish folder

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.

MSIPublish folder

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.

Running the installer

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

  • Joyce says:

    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

  • Renat Tlebaldziyeu (Add-in Express Team) says:

    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

  • William Rossi says:

    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!

  • Andrei Smolin (Add-in Express Team) says:

    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.

Post a comment

Have any questions? Ask us right now!