Software tag
A software tag is a small XML file that tells a company's asset and license tools exactly what product is installed, who made it, and whether it needs a license. Home users never see it. Companies that buy your product for many people rely on it. This section writes the tag when the product installs and deletes it when the product is removed.
What a software tag is
A software tag — a SWID tag, from Software Identification — is a file described by the international standard ISO/IEC 19770-2. It names the product, its version, the company that made it and the one that licenses it, and a few facts about its license. The installer writes it as the product installs — in the install folder or in C:\ProgramData, depending on the form of the standard — and the uninstaller takes it away.
Your program never reads the tag, and nothing changes for the person who installs it. The tag is there for the company's IT department.
Who reads it
Companies keep track of the software on their computers with software asset management (SAM) tools. They scan every computer, list what is installed, and compare it with the licenses the company bought.
| Tool | What it reads |
|---|---|
| Microsoft Configuration Manager | Tags of the 2009 form, in its software inventory (the SMS_SoftwareTag class) |
| Flexera | Tags of both forms, in ProgramData and Program Files |
| Snow | Tags of both forms, including ProgramData\regid.* |
| IBM License Metric Tool, BigFix Inventory | Tags of the 2015 form; recent versions also the older one |
| Security and compliance scanners | Name, publisher and version, to match installed products to vulnerability lists |
Without a tag these tools guess the product from its entry in the list of installed apps, and the same product may be named a little differently in each version. With a tag they know it for certain. Microsoft and Adobe ship tags for their products: look in C:\ProgramData\regid.1991-06.com.microsoft.
Who needs it
- You sell to companies, schools or government — switch it on. A product that their tools recognize at once is easier to buy, to count and to pass an audit with. Volume licenses for many users are where a product earns most, and those customers ask for this.
- You sell only to people at home — you can leave it off. Nobody will read it, and it costs nothing either way.
The section is off until you switch on Write a software tag. Every field of the tag is on the page, in one group, and nothing is taken from other sections unless a field says so with a value such as {Publisher}.
Which form
The standard has two forms, and the tools in use read one or the other. Form of the standard chooses which one the installer writes.
| 2015 — current | 2009 — first | |
|---|---|---|
| Who reads it | Newer tools: IBM's, Flexera, Snow | Configuration Manager, and every tool that reads Microsoft's and Adobe's tags |
| Where the file goes | swidtag in the install folder, as the 2015 standard places it | C:\ProgramData\<regid>, as Microsoft and Adobe place theirs |
| What it can say | Everything but the channel name and the customer | Every field of the section |
Take 2015 unless you know your customers' tools want the first form. Take 2009 when they use Configuration Manager, or when the channel name and the customer matter to you: the 2015 form has no place for them. The fields stay on the page either way, marked Written only in the 2009 form, so switching back and forth loses nothing.
Write one form only: two tags of one product would be counted as two installs.
Each field
| Field | In 2015 | In 2009 | What to put there |
|---|---|---|---|
| Tag id | tagId | software_id/unique_id | The tag's own id. Made when you switch the tag on. Keep it the same in every version of the product. |
| Name | name | product_title | The product's name: {ProductName} by default. |
| Version | version | product_version | The product's version: {Version} by default. In 2009 its numbers are also written one by one: major, minor, build, review. |
| Made by, and its regid | Entity role="softwareCreator" | software_creator | The company that made the software. |
| Licensed by, and its regid | Entity role="licensor" | software_licensor | The company that licenses it to users. Usually the maker; another company when it sells the product under its own name. |
| Tag made by, and its regid | Entity role="tagCreator" | tag_creator | Who made the tag: usually the maker. Its regid also names the file, and in 2009 its folder. |
| Using it needs a license | Meta entitlementDataRequired | entitlement_required_indicator | Switch it on for a paid product: asset tools then count its installs against licenses. |
| Serial number | Meta entitlementKey | serial_number | The copy's serial or license key, usually given as it installs. |
| Channel | Meta channelType | license_linkage/channel_type | How this build is sold. |
| Channel name | — | license_linkage/channel_name | Who sold it, when not you. |
| Customer | — | license_linkage/customer_type | Whom the build is for. |
In 2015, when the same company plays several roles with the same name and regid, the tag has one Entity with all of its roles.
Fields that take values work as everywhere in Cobalt Installer: {Publisher}, {ProductName}, your own values from Properties and variables. The project's values are filled in when the setup is built; values known only on the user's computer, and values given on the command line, when it installs. Characters that XML does not allow as they are, such as & and <, are written safely for you.
The regid
A regid names an organization in a way that never repeats. It is made of three parts:
regid.2009-04.com.example
─┬───── ─┬─────────
│ └ your domain, written backwards: example.com → com.example
└ the year and month the domain became yours
The year and month keep the regid unique even if the domain changes hands one day: the next owner gets another month. Take the first full month your company owned the domain. If you don't know it exactly, a public WHOIS lookup shows when the domain was registered; then use the same regid for ever, for every product.
The … button next to a regid field makes one for you: it takes the site from Description, asks for the year and month, and shows the regid before you use it. The section says when a regid is not written the right way.
Most companies use the same regid for all three roles.
Tag id
The tag id identifies the product's tag across versions: an asset tool sees version 2 replace version 1 because both have the same id. Cobalt Installer makes a new one (a GUID) the first time you switch the tag on.
- Keep it as it is when you release a new version.
- Press New only for a product that is really another one: a separate edition sold on its own, say.
If your company already has tag ids for its products — from an earlier installer — put the product's old one here, so the tools see one product across the change.
Using it needs a license
Switch on Using it needs a license for a product that is bought. Asset tools then treat each install as one that must be covered by a license. Leave it off for free products and for free tools that come with a paid one.
Serial number
A serial number is different for each copy, so it is usually given as the product installs. Make a value of your own in Properties and variables — SERIAL, with An admin may give another on — and put {SERIAL} in the serial number field. An admin then installs with it:
CobaltPhoto-Setup.exe /S SERIAL=ACME-2026-0042
The serial number is kept with the product's entry, so an update writes the same one again.
Sale
Write how it was sold and to whom adds the channel and the customer. It is for a build made for one kind of sale: a volume build for companies next to a retail one, a build for a reseller.
| Channel | When |
|---|---|
| Retail | Sold copy by copy, in a store or on your site |
| Volume | One license for many users of one organization |
| OEM | Comes with a computer or a device |
| Academic | Sold to schools and universities at their price |
| Subscription | Paid for by the month or the year |
| Other | Any other way |
Channel name is who sold it when it was not you: a reseller, a store. Customer is whom the build is for: a company, a government body, a school or university, a person. Both are written in the 2009 form only.
The standard gives examples of these words rather than a fixed list. The installer writes the ones vendors use: Retail, Volume, OEM, Academic, Subscription, Other for the channel; Corporate, Government, Educational, Retail (a person), Other for the customer.
The file
The file is named after the tag maker's regid and the tag id, so it is unique for your company and the product: regid.2009-04.com.example_7d3f5c1e-2b4a-4e8f-9c61-0a5b3d2e7f10.swidtag. Where it goes depends on the form:
| Form | Folder |
|---|---|
| 2015 | <install folder>\swidtag, for example C:\Program Files\Cobaltsmith\Cobalt Photo\swidtag |
| 2009 | C:\ProgramData\<regid of the tag maker>, for an install for everyone and for one for the current user alike |
- An update writes the new version's tag in place of the old one. When the form changed between the versions, the old version's file is removed from its own folder.
- The uninstall deletes the tag, and its folder when nothing else is left in it.
The page shows the file as it will be, with this computer's values in it. The same product in the 2015 form:
<?xml version="1.0" encoding="utf-8"?>
<SoftwareIdentity xmlns="http://standards.iso.org/iso/19770/-2/2015/schema.xsd"
name="Cobalt Photo" tagId="7d3f5c1e-2b4a-4e8f-9c61-0a5b3d2e7f10"
version="1.3.5.0" versionScheme="multipartnumeric">
<Entity name="Cobaltsmith" regid="regid.2009-04.com.example" role="tagCreator softwareCreator licensor" />
<Meta entitlementDataRequired="true" channelType="Volume" />
</SoftwareIdentity>
and in the 2009 form, its elements in the order the schema requires:
<?xml version="1.0" encoding="utf-8"?>
<software_identification_tag xmlns="http://standards.iso.org/iso/19770/-2/2009/schema.xsd">
<entitlement_required_indicator>true</entitlement_required_indicator>
<product_title>Cobalt Photo</product_title>
<product_version>
<name>1.3.5.0</name>
<numeric><major>1</major><minor>3</minor><build>5</build><review>0</review></numeric>
</product_version>
<software_creator><name>Cobaltsmith</name><regid>regid.2009-04.com.example</regid></software_creator>
<software_licensor><name>Cobaltsmith</name><regid>regid.2009-04.com.example</regid></software_licensor>
<software_id><unique_id>7d3f5c1e-2b4a-4e8f-9c61-0a5b3d2e7f10</unique_id><tag_creator_regid>regid.2009-04.com.example</tag_creator_regid></software_id>
<tag_creator><name>Cobaltsmith</name><regid>regid.2009-04.com.example</regid></tag_creator>
<license_linkage>
<channel_type>Volume</channel_type>
<customer_type>Corporate</customer_type>
</license_linkage>
</software_identification_tag>
Check what was written
After a test install (or in Sandbox test), PowerShell lists the tags on the computer and shows yours:
# 2009: in ProgramData
Get-ChildItem C:\ProgramData\regid.* -Recurse -Filter *.swidtag | Select-Object FullName
# 2015: in the install folder
Get-ChildItem "C:\Program Files\Cobaltsmith\Cobalt Photo\swidtag" -Filter *.swidtag | Get-Content