We have a Visual Studio Extension that we host in a private gallery. Having installed the initial version, if one returns to the Extension And Updates page, one sees it listed in the list of Installed extensions. Highlighting it shows the [Disable] and [Uninstall] links and in the right-hand pane, one sees the correct 'Created By', 'Date Installed', 'Version' and the 'Automatically update this extension' is checked.
When we prepare an update, we do the following release process:
- In the AssemblyInfo.cs, we update the 'AssemblyVersion' and 'AssemblyFileVersion' to the next version, e.g. "1.12.1.0"
- In the source.extension.vsixmanifest, we update the 'Version' to the next version (for which we use the same value, i.e. "1.12.1.0")
- We then sign the VSIX package
- We then put the VSIX file on our private gallery
- We then update the atom.xml file - more on this later. The atom.xml file happens to exist in the same folder as our VSIX since we only have a limited number of these extensions.
However, the extension doesn't automatically update when you start Visual Studio, nor does it appear as an update when you visit the 'Extensions and Updates'. Users therefore have to be notified of the new version and then manually uninstall the existing one, and install the update.
Okay, I'm pretty sure that there is nothing untoward with the VSIX file itself; I suspect the atom.xml may be at fault. There are several posts on how to author the atom.xml file, but there is a little inconsistency between these, e.g. MSDN, justinmchase, Kornfeld Eliyahu Peter, stackoverflow etc.
Okay. Here is my atom.xml (slightly edited)
<?xml version="1.0" encoding="utf-8"?>
<feed xmlns="http://www.w3.org/2005/Atom">
<title type="text">Our Extension Gallery</title>
<id>uuid:b62cf56a-8a60-4eb6-b217-5e2972e01b39;id=1</id>
<updated>2017-02-28T11:57:22Z</updated>
<entry>
<id>MyAssemblyName.Microsoft.0681eb6c-4275-4d64-9333-dfdabe14f286</id>
<title type="text">Description One</title>
<summary type="text">Description Two</summary>
<published>2017-01-31T11:57:22Z</published>
<updated>2017-02-28T11:57:22Z</updated>
<author>
<name>Me!</name>
</author>
<content type="octet/stream" src="http://server/VisualStudioGallery/MyAssemblyName.vsix" />
<Vsix
xmlns:xsd="http://www.w3.org/2001/XMLSchema"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xmlns="http://schemas.microsoft.com/developer/vsx-syndication-schema/2010">
<Id>0681eb6c-4275-4d64-9333-dfdabe14f286</Id>
<Version>1.12.1.0</Version>
</Vsix>
</entry>
</feed>
So what of this do we update in the atom.xml?
- feed/updated
- feed/entry/updated
- feed/entry/Vsix/version
Format of the date
In some examples I've seen '2011-04-14T14:24:22-07:00', whilst in others I've seen '2012-11-06T22:19:45Z'. Does it matter?
I've tried using the "Time" portion as 'T00:00:01Z' just in case there was any confusion between UTC, Server and Client time. No success.
'feed/entry/id' vs 'feed/entry/Vsix/Id'
Have I got the casing correct for these XML elements?
for 'feed/entry/id', I found that to download I needed to have 'MyAssemblyName.Microsoft.0681eb6c-4275-4d64-9333-dfdabe14f286', but for feed/entry/Vsix/Id it was just '0681eb6c-4275-4d64-9333-dfdabe14f286'.
I feel like I've tinkered with just about every part of the XML but to no avail. I'm sure it's simple....but what that is eludes me.
Thanks
Griff