AlphaAppsDevelopmentPrinciple
ackageRequirement
目前市面常见的Windows安装包主要有*.exe和*.msi两种格式,其中*.exe格式的安装包有基
于msi的,也有的是基于自己的安装规范。
用不同打包工具生成的安装包,支持不同的静默安装命令行参数,示例如下:
打包工具
InnoSetup
InstallShieldWithMSI
VS自带Installer
sis
联想应用商店不对应用程序安装包格式做限制,具体要求如下:
商店目前仅支持*.exe和*.msi两种打包格式(其安装包后缀必须为exe或者msi),但是要
求开发者提供安装包的静默安装、静默卸载的命令行参数。具体步骤如下:
对于非*.msi格式的安装包,开发者在向AppStoreServer提交应用时,除了提交安装包
文件外,还要在AppStoreServer的Web页面中提交静默安装的命令行参数
对于非*.msi格式安装包,开发者在打包时,必须提供完善的脚本来使得安装包支持静默
安装和静默卸载
联想应用商店将对提交的Alpha应用予以审核,审核通过的应用才能进行发布
Alpha平台安装的应用程序要满足对所有用户可见的原则
用VS自带工具打包时,可以将MSI的InstallAllUsers属性设置为true
开发者在用其他安装包制作工具打包时,也要有类似的设置来遵循此规范
安装包格式
exe
exe
msi
exe
静默安装参数
/sp-/silent/norestart
/s/v”/qn”
/qn/x[ProductCode]
/S
ppsManagementRequirement
联想AppStore需要一个唯一标识AlphaApp应用的ID来管理应用程序:
由于某些非msi格式的安装包并不能提供Build-In的字段作为AppID,为了统一管理,
AppID由AppStoreServer来统一分配
应用开发者在联想AppStore第一次提交某个应用时,将会从AppStoreServer获得分
配给该应用的ID,并且把该ID作为此应用(包括后续版本)的唯一标识
开发者在后续提交同一应用的升级版本时,需要输入此ID进行验证。
同一应用(各个版本)ID保持一致,Version保持不同
AlphaAppVersion定义:
AppStore应用的版本号主要由四部分组成,规则如下:
on
版本号必须包含前三部分,revision部分可选
版本号各个段必须全部为数字组成,中间由点号分隔
开发者打包时,可将打包IDE环境中生成的version字段做为该AlphaApp的version
写入注册表中
开发者确保后续提交应用时,版本号维持递增
AlphaApp图标要求
Alpha应用开发者在提交应用时,需要在AppStore的应用提交页面中上传相应的图标文件,
在AlphaShell中,对图标文件的要求如下:
图标文件为Png格式,像素为128*128
Preload应用和Server端下载安装的Store应用共存于Alpha平台,Alpha平台对两类应用
不做区别。为了便于AppService对本地应用做统一管理,同时,也考虑到Preload应用以后
也需要通过AlphaAppStore做升级,对Preload应用的管理策略如下:
Preload安装包的AppID由AppStoreServer统一提前分配给厂商,ID分配策略和
StoreApp一致
Preload应用的后续升级也走AppStore流程。厂商后续的新版本应用安装包,需要上传
至联想的AlphaAppStore,用户将在Alpha平台上,通过AppStoreClient来下载和
安装新版本应用
在windows平台上,建议AppStoreServer端采用GUID作为AppID分配策略
在安装过程中,AppStoreApps和Preload应用都需要在AlphaApp规范指定的注册表键值
下,创建以AppID命名的子键,并将规范要求的metadata属性字段和配置文件路径写入该子
键下面
taConfigurationFile
Lenovo将对AppStore应用和Preload应用开发者提供metadata的Xml配置模板文件,开发者根
据AlphaApp规范,在Xml配置文件中如实填写应用的基本信息,最后将Xml配置文件打包进安装
包内,在安装过程中将配置文件拷贝到应用程序的安装目录下,并将主程序的安装路径和
MetadataXml配置文件的路径写进注册表对应的键下面。AlphaApp默认注册表路径如下:
HKEY_LOCAL_MACHIESOFTWARELenovoLenovoAlphaApps
安装包将使用自己的AppID(GUID)做为子键名称,在当前LenovoAlphaApps下创建该子键,示例
如下:
开发者需要在对应以AppID命名的子键下面创建必要的属性字段:
字段名称
AppInstallDir
AppMetadataPath
ExecutableAppFullPath
IconPath
SilentUninstallString
StartArgs
Version
示例如下:
数据类型
REG_SZ
REG_SZ
REG_SZ
REG_SZ
REG_SZ
REG_SZ
REG_SZ
说明
Alpha应用安装目录
应用的metadata配置文件所在路径
主程序的可执行全路径
AlphaShell图标文件所在路径
可执行的静默卸载字符串
主程序启动的命令行参数(可为空)
应用的版本号
AlphaApp的Metadata配置文件模板请参照文件。开发者打包时,请自行填写
metadata字段信息,也可以修改配置文件的名称,但要保证应用的配置文件结构和模板一致。
备注:
32位windows应用程序在64位系统上进行安装时,写入注册表的路径会被重定,例如,写入
HKEY_LOCAL_MACHIESOFTWARELenovoLenovoAlphaApps键下的值,会被重定向到
HKEY_LOCAL_MACHIESOFTWAREWow6432odeLenovoLenovoAlphaApps下面。
重定向由操作系统完成,应用开发者不需要关注,但是在打包过程中,凡是与路径相关的注册表属性
值,开发者在打包环境中需要用相对路径来指定。在安装过程中,系统会自动完成重定向,并将相对
路径转换成实际的安装路径(重定向后的)。
l/Uninstall/UpdateProcessRequirement
利用应用开发者提供的静默安装命令行参数,可以对安装包进行静默安装,中间不能出现任何
可以交互的界面,且安装完成后不得重启生效
整个安装过程要求一次完成,中间不得出现重启后继续安装的情况
Alpha平台不对应用的安装路径做限定,应用开发者在打包时,可以自己指定缺省安装路径
安装包在安装过程中,要在注册表中写入SilentUninstallString字段
非msi格式的安装包要在SilentUninstallString字符串中指定卸载程序的可执行全路径
和对应的静默卸载命令行参数,例如:
C:Windowssystem32
C:Windowssystem32s
对于msi格式的安装包,只要在SilentUninstallString中包含productcode和静默卸
载命令行参数即可,例如:
/qn/x{2A2F3AE8-246A-4252-BB26-1BEB45627074}
在做升级安装时,安装包要对本地已安装的同一应用进行版本比对,安装包版本号大于或等于
本地已安装应用的版本号时,则进行升级安装(或覆盖安装),否则退出安装。
每一次升级操作都必须要修改Version字段
升级后的应用程序名称(Appame)不可改变
在升级过程中,安装脚本不需要检测和清除旧版本应用上次创建的Alpha注册表键值:
HKEY_LOCAL_MACHIESOFTWARELenovoLenovoAlphaApps[AppID]
只需要执行新建注册表键值操作,注册表会自动覆盖旧版本的键值以及键值下的属性字段。
对于Alpha应用安装包,只需要安装时创建规定的注册表键值及其属性,卸载时清除干净
即可
升级后的版本同样需要符合AlphaApp规范
本地机器不允许安装同一Alpha应用的多个版本
Alpha应用支持覆盖安装(修复安装)。即,同一应用可以重复安装且重复安装过程中不
能出现任何提示或用户交互
对于那些除了提供命令行,还需要提供特殊依赖文件才能支持静默安装和静默卸载的安装包,
联想AlphaAppStore不提供支持,请应用开发者在制作安装包时自行进行调整
关于InstallShield打包工具,如果是基于BasicMsi制作的msi安装包,静默安装、卸
载参数与WindowsInstaller相同。如果是基于BasicMsi制作的exe安装包,静默安装
参数为/s/v"/qn",静默卸载参数也同WindowsInstaller,都不需要提供额外的依赖
文件。
AlphaShell平台是通过注册表来管理本地Alpha应用,以及监控应用的安装和卸载,所以,
Alpha应用在安装时,要保证创建正确的注册表键值,确保写进注册表的属性字段都是有效内
容。而当应用卸载时,必须清除LenovoAlphaApps下的AppID子键,以及该子键下的所有属
性,但不能删除LenovoAlphaApps及其以上的注册表键
在Alpha平台,应用的安装、升级和卸载都为静默方式,AlphaShell平台需要一个机制来确
认上述过程是否执行成功。AppService会创建一个新进程来执行安装、升级和卸载操作,同
时会等待上述操作执行完毕,直到退出,并通过获取其ExitCode返回值来判定执行的成功
或失败
请应用开发者确保,当应用的安装、升级和卸载成功执行后,ExitCode返回0
当上述的操作失败后,请返回非0的ExitCode错误码
大部分针对Windows应用的打包工具,在默认情况下都以0标识操作成功,非0值标识导
致操作失败的错误码
Alpha平台应用安装和卸载都为静默方式,为了获得良好的用户体验,应用的安装、升级和卸
载过程需要有时间上限,最长不能超过五分钟
ationalizationSupprort
当系统语言发生变化时,针对每个AlphaApp,Shell将从其对应的xml配置文件来读取对应语言
下的名称和应用描述。AppStore应用开发者和Perload应用开发厂商将通过填写固定的xml模板
来完成对Shell层多语言显示的支持。示例如下:
innocence.
目前AlphaShell平台支持中文和英文,App开发者可以在后期提供更多的语言版本,对于Shell
的多语言支持,只需要应用在升级更换配置文件即可。AppService在启动应用时,
将根据当前系统的语言环境载入相应的描述。
ppRuntimePerformanceRequirement
AlphaApp最终要在Windows8平台上进行安装和运行,因此,要求Alpha应用程序必须支持
Win864位运行环境(注:16位程序和32位驱动不能在64位系统上运行)
Alpha应用在安装过程中,不得向windows传统桌面和开始菜单中创建快捷方式
静默安装、卸载过程中,不能有任何背景音乐
安装包不能附带任何插件,修改用户浏览器默认首页等等。安装完成后,不能启动浏览器来链
接到或其他网站
静默安装完成后,不能自动运行应用程序
应用开发者要保证,在静默安装情况下,各种默认安装选项也能够达到最优配置
Alpha应用在启动的入口处要进行唯一实例检查,在AlphaShell平台上,同一应用不允许运
行多个实例
Alpha应用程序自打开后,必须始终全屏运行,直到程序退出。
提交的应用程序图标(运行屏幕截图)像素必需符合AlphaShell平台的要求
lSignatureRequirements
建议Alpha应用开发者对自己制作的安装包进行数字签名(非强制性要求),以保证安装包在发布
过程中不被篡改
al
AlphaShell将部署在微软Windows864bit平台上,由于Windows系统对msi格式安装包有很好
的支持,提供了完善的命令行参数,有标准的ExitCode定义,以及安装过程中的错误回滚机制,
因此建议Alpha应用开发者提供msi(或基于msi)的安装包,以便AlphaShell平台更好的控制
和管理Alpha应用。
本文发布于:2022-08-01 17:40:08,感谢您对本站的认可!
本文链接:http://www.wtabcd.cn/falv/fa/78/51007.html
版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系,我们将在24小时内删除。
留言与评论(共有 0 条评论) |