Download the Application Installer Spec - Sprout

HP Sprout Marketplace Partner Application Installer Specifications
Version 1.1
1. Introduction
An HP Sprout Application is a Native OS Application taking advantage of the HP Sprout
hardware using HP Projective Computing Platform or the innovative multi-screen layout. An
example of a “Native” OS Application is a Windows Desktop Application built to run on
Windows Operating System.
HP Sprout Application developers package and distribute their application by two rules:
-
use MSI Setup package which is supported by Microsoft Windows Installer ecosystem
ensure installation is silent
This document is primarily targeted for HP Sprout Application developers who want to
promote their application (Partner Application) in the HP Sprout Workspace Application
View in Gallery.
This document would explain how HP Sprout Application developers could provide
application metadata, icon files and how to include custom actions as part of their MSI
Install or Uninstall sequence to facilitate the HP Sprout Workspace Application promotion
mechanism.
2. Related Terms
Terms
Explanation
OS
Marketplace Partner
Operating System
An Application Developer or Company registered with
HP Sprout Developer Portal
Globally Unique Identifier
Microsoft Installer package
GUID
MSI
3. Provisioning Workflow:
A Marketplace Partner should register with HP Sprout Developer Web Portal. A Marketplace
Partner provides HP with a MSI Application setup package through the HP Sprout Developer
Web Portal.
3.1. Guidelines for Application Installer (MSI Setup package) creation process:
a. All relevant binaries in the application should be digitally signed for verifying trust of
an application.
b. Installers should place binaries (especially the launch point executable) in a trusted
location (please follow OS Guidelines).
c. Installers should support Silent Install, Silent Uninstall and Silent Update mechanism,
where no user input is needed or no user interface is shown during setup process.
d. Create the HP Marketplace Partner provisioning XML manifest file in a text editor.
XML Tag Name
Description
AppDisplayName
Display Name of the application
AppDescription
Short introduction of the app.
DeveloperDisplayName Display Name of the app
developer
AppVersion
Version number
AppLaunchPath
Full Install Path of the
application including the
filename.
AppCategory
Category of Application in
Sprout Marketplace
Requirements
This field will be used to
show user the display name
of the Application. 20 chars
max.
This field will be used to
show user the description of
the Application
This field will be used to
show user the Publisher or
Developer name or
Company name
Version should be in format:
Major.Minor.Revision.Build
E.g: 1.0.1.0
Please use Environment
Variables in path
E.g: %ProgramFiles(x86)%
The Executable to launch
should be in the root of
Install directory.
Please refer to HP Sprout
Marketplace Category List
Eg: “Photography”
AppID
Reserve a unique app ID to
identify an Application launch
point in the HP Workspace
Application.
DeveloperID
Reserve a unique GUID to
identify an App Developer or
Publisher.
To generate an app ID,
create an entry in
Management Portal. Start
with version 0.0.0.1 to
create a pre-approved entry.
(final version can be
updated after app approval
process. Use the ‘Public Item
ID’ in the technical info
section of the item entry. i.e.
g2.5d25727a-bf01-4dd7bb3b-xxxxxxxxxxxx
To generate GUID use
Microsoft “guidgen.exe” tool
Example format is
DB72D2EE-32DA-4742AA4E-5A79F1761D83
Sample HP Sprout Marketplace Provisioning XML File:
<?xml version="1.0" encoding="utf-8"?>
<AppMetadata spec="1.0">
<AppDisplayName>AB Software</AppDisplayName>
<AppDescription>This is a Photo editing App</AppDescription>
<DeveloperDisplayName>ABCompany</DeveloperDisplayName>
<AppVersion>1.0.0.0</AppVersion>
<AppLaunchPath>%ProgramFiles(x86)%\ABCompany\ABSoftware.msi</AppLaunchPath>
<AppCategory>Photography</AppCategory>
<AppID>g2.5d25727a-bf01-4dd7-bb3b-xxxxxxxxxxxx</AppID>
<DeveloperID>DB72D2EE-32DA-4742-AA4E-5A79F1761D83</DeveloperID>
</AppMetadata>
e. After authoring the HP Marketplace Partner provisioning XML manifest file, attach
the file and send it to Sprout App Review ([email protected]) to get it encrypted.
Remember to start with “[Encrypt]” in your email title.
f. You will receive an email reply with encrypted file “appinfo.hpspdat”.
g. Include this encrypted “appinfo.hpspdat” file as part of Application Installer package
and place it in the Install directory root.
h. The Install Action, Create a Registry Sub key (preferably after installing all the
required files) with the directory path of “appinfo.hpspdat” in the Main Hive:
HKEY_LOCAL_MACHINE\SOFTWARE\Hewlett-Packard\HP.PC.SproutAppList
;
Attention!
- The Registry SubKey should be a GUID of your choice; the registry string value
should be the directory path pointing to the appinfo.hpspdat.
-
For Sprout to read the data from the Registry properly, the app should be targeted
to x64 platform (Platform="x64") as shown in the Product.wxs in the Appendix A.
Example Wix Setup MSI Project snippet:
<Fragment>
<DirectoryRef Id="TARGETDIR">
<Component Id="RegistrySub" Guid="{0DFDC6AD-7F1E-48DD-BB9F-E8A213052190}" KeyPath="yes"
Win64="yes">
<RegistryKey Root="HKLM" Key="SOFTWARE\Hewlett-Packard\HP.PC.SproutAppList\46CC98E37AB5-4219-B35B-905335139A8A" ForceDeleteOnUninstall="yes">
<RegistryValue Type="string" Name="metadata"
Value="%ProgramFiles(x86)%\ABCompany\appinfo.hpspdat"/>
</RegistryKey>
</Component>
</DirectoryRef>
</Fragment>
i.
The Uninstall action to remove the Registry subkey (GUID) from Registry hive should
be already done automatically by the uninstall action of the MSI Setup project.
j.
For Update action, kindly please add code to update the Registry subkey referring
the same GUID and kindly please do not remove it.
k. Include Application Icons as part of Installer package.
The installer should place a folder named “icons” in the application’s Install directory
root. The icon should be in “.png” format.
[INSTALL_DIRECTORY_ROOT]
|---appinfo.hpspdat
|
|---icons
|
|---icon.png
-
Icon needs to be of dimensions: 600 width x 600 height (pixels)
Name of Icon should be “icon.png”
l.
Create the Setup MSI package and upload to HP Sprout App Developer Portal for
reviewing by HP Sprout Application Certification team.
APPENDIX A
Sample MSI Installer Project (Wix project).
Note: This is only a sample and should be used only for developer education purposes.
Product.wxs
<?xml version="1.0" encoding="UTF-8"?>
<Wix xmlns="http://schemas.microsoft.com/wix/2006/wi">
<Product Id="*" Name="ABSoftwareSetup" Language="1033" Version="1.0.0.0"
Manufacturer="Hewlett-Packard Company" UpgradeCode="1342cf48-5b83-4e25-8461-b03dc3105fce">
<Package Id="*" InstallerVersion="200" Compressed="yes" InstallScope="perMachine"
Platform="x64" />
<MajorUpgrade DowngradeErrorMessage="A newer version of [ProductName] is
already installed." />
<MediaTemplate EmbedCab="yes" />
<Feature Id="ProductFeature" Title="ABSoftwareSetup" Level="1">
<ComponentGroupRef Id="ProductComponents" />
<ComponentRef Id="RegistryMain"/>
<ComponentRef Id="RegistrySub"/>
</Feature>
</Product>
<Fragment>
<Directory Id="TARGETDIR" Name="SourceDir">
<Directory Id="ProgramFilesFolder">
<Directory Id="INSTALLFOLDER" Name="ABCompany">
<Directory Id="ICONSFOLDER" Name="icons"/>
</Directory>
</Directory>
</Directory>
</Fragment>
<Fragment>
<ComponentGroup Id="ProductComponents" Directory="INSTALLFOLDER">
<Component Id="cmp0A8691AD804241D395ED6A8B8C4F395D">
<File Source="$(var.ABSoftware.TargetPath)" KeyPath="yes"/>
</Component>
<Component Id="cmpBC16E02E92374658A5F19CB4D2EDC01A">
<File Source="..\ABSoftware\bin\Release\ABSoftware.msi.config" KeyPath="yes"/>
</Component>
<Component Id="cmpE5D15B4668FF4A26A5C80D5744079A10">
<File Source="..\ABSoftware\bin\Release\appinfo.hpspdat" KeyPath="yes"/>
</Component>
<ComponentRef Id="cmpC36291C6BDB24AB7B7DB0BAA33B70833"/>
</ComponentGroup>
</Fragment>
<Fragment>
<Component Id="cmpC36291C6BDB24AB7B7DB0BAA33B70833" Directory="ICONSFOLDER" >
<File Source="..\ABSoftware\bin\Release\icons\icon.png" KeyPath="yes"/>
</Component>
</Fragment>
<Fragment>
<DirectoryRef Id="TARGETDIR">
<Component Id="RegistrySub" Guid="{0DFDC6AD-7F1E-48DD-BB9F-E8A213052190}" KeyPath="yes"
Win64="yes">
<RegistryKey Root="HKLM" Key="SOFTWARE\Hewlett-Packard\HP.PC.SproutAppList\46CC98E37AB5-4219-B35B-905335139A8A" ForceDeleteOnUninstall="yes">
<RegistryValue Type="string" Name="metadata"
Value="%ProgramFiles(x86)%\ABCompany\appinfo.hpspdat"/>
</RegistryKey>
</Component>
</DirectoryRef>
</Fragment>
</Wix>
ABSoftwareSetup.wixproj
<?xml version="1.0" encoding="utf-8"?>
<Project ToolsVersion="4.0" DefaultTargets="Build"
xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
<PropertyGroup>
<Configuration Condition=" '$(Configuration)' == '' ">Debug</Configuration>
<Platform Condition=" '$(Platform)' == '' ">x86</Platform>
<ProductVersion>3.8</ProductVersion>
<ProjectGuid>b6323ee3-194b-42ed-adf2-cd1a3bd5bd23</ProjectGuid>
<SchemaVersion>2.0</SchemaVersion>
<OutputName>ABSoftwareSetup</OutputName>
<OutputType>Package</OutputType>
<WixTargetsPath Condition=" '$(WixTargetsPath)' == '' AND '$(MSBuildExtensionsPath32)' != ''
">$(MSBuildExtensionsPath32)\Microsoft\WiX\v3.x\Wix.targets</WixTargetsPath>
<WixTargetsPath Condition=" '$(WixTargetsPath)' == ''
">$(MSBuildExtensionsPath)\Microsoft\WiX\v3.x\Wix.targets</WixTargetsPath>
</PropertyGroup>
<PropertyGroup Condition=" '$(Configuration)|$(Platform)' == 'Debug|x86' ">
<OutputPath>bin\$(Configuration)\</OutputPath>
<IntermediateOutputPath>obj\$(Configuration)\</IntermediateOutputPath>
<DefineConstants>Debug</DefineConstants>
</PropertyGroup>
<PropertyGroup Condition=" '$(Configuration)|$(Platform)' == 'Release|x86' ">
<OutputPath>bin\$(Configuration)\</OutputPath>
<IntermediateOutputPath>obj\$(Configuration)\</IntermediateOutputPath>
</PropertyGroup>
<ItemGroup>
<Compile Include="Product.wxs" />
</ItemGroup>
<ItemGroup>
<ProjectReference Include="..\ABSoftware\ABSoftware.csproj">
<Name>ABSoftware</Name>
<Project>{68be939c-8074-4396-b7f4-a34a3d2763c6}</Project>
<Private>True</Private>
<DoNotHarvest>True</DoNotHarvest>
<RefProjectOutputGroups>Binaries;Content;Satellites</RefProjectOutputGroups>
<RefTargetDir>INSTALLFOLDER</RefTargetDir>
</ProjectReference>
</ItemGroup>
<Import Project="$(WixTargetsPath)" />
<!-To modify your build process, add your task inside one of the targets below and uncomment it.
Other similar extension points exist, see Wix.targets.
<Target Name="BeforeBuild">
</Target>
<Target Name="AfterBuild">
</Target>
-->
</Project>