AlphaAppsDevelopmentPrinciple
ackageRequirement
目前市面常見的Windows安裝包主要有*.exe和*.msi兩種格式,其中*.exe格式的安裝包有基
于msi的,也有的是基于自己的安裝規(guī)范。
用不同打包工具生成的安裝包,支持不同的靜默安裝命令行參數(shù),示例如下:
打包工具
InnoSetup
InstallShieldWithMSI
VS自帶Installer
sis
聯(lián)想應(yīng)用商店不對應(yīng)用程序安裝包格式做限制,具體要求如下:
?商店目前僅支持*.exe和*.msi兩種打包格式(其安裝包后綴必須為exe或者msi),但是要
求開發(fā)者提供安裝包的靜默安裝、靜默卸載的命令行參數(shù)。具體步驟如下:
?對于非*.msi格式的安裝包,開發(fā)者在向AppStoreServer提交應(yīng)用時(shí),除了提交安裝包
文件外,還要在AppStoreServer的Web頁面中提交靜默安裝的命令行參數(shù)
?對于非*.msi格式安裝包,開發(fā)者在打包時(shí),必須提供完善的腳本來使得安裝包支持靜默
安裝和靜默卸載
?聯(lián)想應(yīng)用商店將對提交的Alpha應(yīng)用予以審核,審核通過的應(yīng)用才能進(jìn)行發(fā)布
?Alpha平臺安裝的應(yīng)用程序要滿足對所有用戶可見的原則
?用VS自帶工具打包時(shí),可以將MSI的InstallAllUsers屬性設(shè)置為true
?開發(fā)者在用其他安裝包制作工具打包時(shí),也要有類似的設(shè)置來遵循此規(guī)范
安裝包格式
exe
exe
msi
exe
靜默安裝參數(shù)
/sp-/silent/norestart
/s/v”/qn”
/qn/x[ProductCode]
/S
ppsManagementRequirement
?聯(lián)想AppStore需要一個(gè)唯一標(biāo)識AlphaApp應(yīng)用的ID來管理應(yīng)用程序:
?由于某些非msi格式的安裝包并不能提供Build-In的字段作為AppID,為了統(tǒng)一管理,
AppID由AppStoreServer來統(tǒng)一分配
?應(yīng)用開發(fā)者在聯(lián)想AppStore第一次提交某個(gè)應(yīng)用時(shí),將會從AppStoreServer獲得分
配給該應(yīng)用的ID,并且把該ID作為此應(yīng)用(包括后續(xù)版本)的唯一標(biāo)識
?開發(fā)者在后續(xù)提交同一應(yīng)用的升級版本時(shí),需要輸入此ID進(jìn)行驗(yàn)證。
?同一應(yīng)用(各個(gè)版本)ID保持一致,Version保持不同
?AlphaAppVersion定義:
?AppStore應(yīng)用的版本號主要由四部分組成,規(guī)則如下:
on
?版本號必須包含前三部分,revision部分可選
?版本號各個(gè)段必須全部為數(shù)字組成,中間由點(diǎn)號分隔
?開發(fā)者打包時(shí),可將打包IDE環(huán)境中生成的version字段做為該AlphaApp的version
寫入注冊表中
?開發(fā)者確保后續(xù)提交應(yīng)用時(shí),版本號維持遞增
?AlphaApp圖標(biāo)要求
Alpha應(yīng)用開發(fā)者在提交應(yīng)用時(shí),需要在AppStore的應(yīng)用提交頁面中上傳相應(yīng)的圖標(biāo)文件,
在AlphaShell中,對圖標(biāo)文件的要求如下:
?圖標(biāo)文件為Png格式,像素為128*128
?Preload應(yīng)用和Server端下載安裝的Store應(yīng)用共存于Alpha平臺,Alpha平臺對兩類應(yīng)用
不做區(qū)別。為了便于AppService對本地應(yīng)用做統(tǒng)一管理,同時(shí),也考慮到Preload應(yīng)用以后
也需要通過AlphaAppStore做升級,對Preload應(yīng)用的管理策略如下:
?Preload安裝包的AppID由AppStoreServer統(tǒng)一提前分配給廠商,ID分配策略和
StoreApp一致
?Preload應(yīng)用的后續(xù)升級也走AppStore流程。廠商后續(xù)的新版本應(yīng)用安裝包,需要上傳
至聯(lián)想的AlphaAppStore,用戶將在Alpha平臺上,通過AppStoreClient來下載和
安裝新版本應(yīng)用
?在windows平臺上,建議AppStoreServer端采用GUID作為AppID分配策略
?在安裝過程中,AppStoreApps和Preload應(yīng)用都需要在AlphaApp規(guī)范指定的注冊表鍵值
下,創(chuàng)建以AppID命名的子鍵,并將規(guī)范要求的metadata屬性字段和配置文件路徑寫入該子
鍵下面
taConfigurationFile
Lenovo將對AppStore應(yīng)用和Preload應(yīng)用開發(fā)者提供metadata的Xml配置模板文件,開發(fā)者根
據(jù)AlphaApp規(guī)范,在Xml配置文件中如實(shí)填寫應(yīng)用的基本信息,最后將Xml配置文件打包進(jìn)安裝
包內(nèi),在安裝過程中將配置文件拷貝到應(yīng)用程序的安裝目錄下,并將主程序的安裝路徑和
MetadataXml配置文件的路徑寫進(jìn)注冊表對應(yīng)的鍵下面。AlphaApp默認(rèn)注冊表路徑如下:
HKEY_LOCAL_MACHIESOFTWARELenovoLenovoAlphaApps
安裝包將使用自己的AppID(GUID)做為子鍵名稱,在當(dāng)前LenovoAlphaApps下創(chuàng)建該子鍵,示例
如下:
開發(fā)者需要在對應(yīng)以AppID命名的子鍵下面創(chuàng)建必要的屬性字段:
字段名稱
AppInstallDir
AppMetadataPath
ExecutableAppFullPath
IconPath
SilentUninstallString
StartArgs
Version
示例如下:
數(shù)據(jù)類型
REG_SZ
REG_SZ
REG_SZ
REG_SZ
REG_SZ
REG_SZ
REG_SZ
說明
Alpha應(yīng)用安裝目錄
應(yīng)用的metadata配置文件所在路徑
主程序的可執(zhí)行全路徑
AlphaShell圖標(biāo)文件所在路徑
可執(zhí)行的靜默卸載字符串
主程序啟動(dòng)的命令行參數(shù)(可為空)
應(yīng)用的版本號
AlphaApp的Metadata配置文件模板請參照文件。開發(fā)者打包時(shí),請自行填寫
metadata字段信息,也可以修改配置文件的名稱,但要保證應(yīng)用的配置文件結(jié)構(gòu)和模板一致。
備注:
32位windows應(yīng)用程序在64位系統(tǒng)上進(jìn)行安裝時(shí),寫入注冊表的路徑會被重定,例如,寫入
HKEY_LOCAL_MACHIESOFTWARELenovoLenovoAlphaApps鍵下的值,會被重定向到
HKEY_LOCAL_MACHIESOFTWAREWow6432odeLenovoLenovoAlphaApps下面。
重定向由操作系統(tǒng)完成,應(yīng)用開發(fā)者不需要關(guān)注,但是在打包過程中,凡是與路徑相關(guān)的注冊表屬性
值,開發(fā)者在打包環(huán)境中需要用相對路徑來指定。在安裝過程中,系統(tǒng)會自動(dòng)完成重定向,并將相對
路徑轉(zhuǎn)換成實(shí)際的安裝路徑(重定向后的)。
l/Uninstall/UpdateProcessRequirement
?利用應(yīng)用開發(fā)者提供的靜默安裝命令行參數(shù),可以對安裝包進(jìn)行靜默安裝,中間不能出現(xiàn)任何
可以交互的界面,且安裝完成后不得重啟生效
?整個(gè)安裝過程要求一次完成,中間不得出現(xiàn)重啟后繼續(xù)安裝的情況
?Alpha平臺不對應(yīng)用的安裝路徑做限定,應(yīng)用開發(fā)者在打包時(shí),可以自己指定缺省安裝路徑
?安裝包在安裝過程中,要在注冊表中寫入SilentUninstallString字段
?非msi格式的安裝包要在SilentUninstallString字符串中指定卸載程序的可執(zhí)行全路徑
和對應(yīng)的靜默卸載命令行參數(shù),例如:
C:Windowssystem32
C:Windowssystem32s
?對于msi格式的安裝包,只要在SilentUninstallString中包含productcode和靜默卸
載命令行參數(shù)即可,例如:
/qn/x{2A2F3AE8-246A-4252-BB26-1BEB45627074}
?在做升級安裝時(shí),安裝包要對本地已安裝的同一應(yīng)用進(jìn)行版本比對,安裝包版本號大于或等于
本地已安裝應(yīng)用的版本號時(shí),則進(jìn)行升級安裝(或覆蓋安裝),否則退出安裝。
?每一次升級操作都必須要修改Version字段
?升級后的應(yīng)用程序名稱(Appame)不可改變
?在升級過程中,安裝腳本不需要檢測和清除舊版本應(yīng)用上次創(chuàng)建的Alpha注冊表鍵值:
HKEY_LOCAL_MACHIESOFTWARELenovoLenovoAlphaApps[AppID]
只需要執(zhí)行新建注冊表鍵值操作,注冊表會自動(dòng)覆蓋舊版本的鍵值以及鍵值下的屬性字段。
對于Alpha應(yīng)用安裝包,只需要安裝時(shí)創(chuàng)建規(guī)定的注冊表鍵值及其屬性,卸載時(shí)清除干凈
即可
?升級后的版本同樣需要符合AlphaApp規(guī)范
?本地機(jī)器不允許安裝同一Alpha應(yīng)用的多個(gè)版本
?Alpha應(yīng)用支持覆蓋安裝(修復(fù)安裝)。即,同一應(yīng)用可以重復(fù)安裝且重復(fù)安裝過程中不
能出現(xiàn)任何提示或用戶交互
?對于那些除了提供命令行,還需要提供特殊依賴文件才能支持靜默安裝和靜默卸載的安裝包,
聯(lián)想AlphaAppStore不提供支持,請應(yīng)用開發(fā)者在制作安裝包時(shí)自行進(jìn)行調(diào)整
?關(guān)于InstallShield打包工具,如果是基于BasicMsi制作的msi安裝包,靜默安裝、卸
載參數(shù)與WindowsInstaller相同。如果是基于BasicMsi制作的exe安裝包,靜默安裝
參數(shù)為/s/v"/qn",靜默卸載參數(shù)也同WindowsInstaller,都不需要提供額外的依賴
文件。
?AlphaShell平臺是通過注冊表來管理本地Alpha應(yīng)用,以及監(jiān)控應(yīng)用的安裝和卸載,所以,
Alpha應(yīng)用在安裝時(shí),要保證創(chuàng)建正確的注冊表鍵值,確保寫進(jìn)注冊表的屬性字段都是有效內(nèi)
容。而當(dāng)應(yīng)用卸載時(shí),必須清除LenovoAlphaApps下的AppID子鍵,以及該子鍵下的所有屬
性,但不能刪除LenovoAlphaApps及其以上的注冊表鍵
?在Alpha平臺,應(yīng)用的安裝、升級和卸載都為靜默方式,AlphaShell平臺需要一個(gè)機(jī)制來確
認(rèn)上述過程是否執(zhí)行成功。AppService會創(chuàng)建一個(gè)新進(jìn)程來執(zhí)行安裝、升級和卸載操作,同
時(shí)會等待上述操作執(zhí)行完畢,直到退出,并通過獲取其ExitCode返回值來判定執(zhí)行的成功
或失敗
?請應(yīng)用開發(fā)者確保,當(dāng)應(yīng)用的安裝、升級和卸載成功執(zhí)行后,ExitCode返回0
?當(dāng)上述的操作失敗后,請返回非0的ExitCode錯(cuò)誤碼
?大部分針對Windows應(yīng)用的打包工具,在默認(rèn)情況下都以0標(biāo)識操作成功,非0值標(biāo)識導(dǎo)
致操作失敗的錯(cuò)誤碼
?Alpha平臺應(yīng)用安裝和卸載都為靜默方式,為了獲得良好的用戶體驗(yàn),應(yīng)用的安裝、升級和卸
載過程需要有時(shí)間上限,最長不能超過五分鐘
ationalizationSupprort
當(dāng)系統(tǒng)語言發(fā)生變化時(shí),針對每個(gè)AlphaApp,Shell將從其對應(yīng)的xml配置文件來讀取對應(yīng)語言
下的名稱和應(yīng)用描述。AppStore應(yīng)用開發(fā)者和Perload應(yīng)用開發(fā)廠商將通過填寫固定的xml模板
來完成對Shell層多語言顯示的支持。示例如下:
innocence.
目前AlphaShell平臺支持中文和英文,App開發(fā)者可以在后期提供更多的語言版本,對于Shell
的多語言支持,只需要應(yīng)用在升級更換配置文件即可。AppService在啟動(dòng)應(yīng)用時(shí),
將根據(jù)當(dāng)前系統(tǒng)的語言環(huán)境載入相應(yīng)的描述。
ppRuntimePerformanceRequirement
?AlphaApp最終要在Windows8平臺上進(jìn)行安裝和運(yùn)行,因此,要求Alpha應(yīng)用程序必須支持
Win864位運(yùn)行環(huán)境(注:16位程序和32位驅(qū)動(dòng)不能在64位系統(tǒng)上運(yùn)行)
?Alpha應(yīng)用在安裝過程中,不得向windows傳統(tǒng)桌面和開始菜單中創(chuàng)建快捷方式
?靜默安裝、卸載過程中,不能有任何背景音樂
?安裝包不能附帶任何插件,修改用戶瀏覽器默認(rèn)首頁等等。安裝完成后,不能啟動(dòng)瀏覽器來鏈
接到或其他網(wǎng)站
?靜默安裝完成后,不能自動(dòng)運(yùn)行應(yīng)用程序
?應(yīng)用開發(fā)者要保證,在靜默安裝情況下,各種默認(rèn)安裝選項(xiàng)也能夠達(dá)到最優(yōu)配置
?Alpha應(yīng)用在啟動(dòng)的入口處要進(jìn)行唯一實(shí)例檢查,在AlphaShell平臺上,同一應(yīng)用不允許運(yùn)
行多個(gè)實(shí)例
?Alpha應(yīng)用程序自打開后,必須始終全屏運(yùn)行,直到程序退出。
?提交的應(yīng)用程序圖標(biāo)(運(yùn)行屏幕截圖)像素必需符合AlphaShell平臺的要求
lSignatureRequirements
建議Alpha應(yīng)用開發(fā)者對自己制作的安裝包進(jìn)行數(shù)字簽名(非強(qiáng)制性要求),以保證安裝包在發(fā)布
過程中不被篡改
al
AlphaShell將部署在微軟Windows864bit平臺上,由于Windows系統(tǒng)對msi格式安裝包有很好
的支持,提供了完善的命令行參數(shù),有標(biāo)準(zhǔn)的ExitCode定義,以及安裝過程中的錯(cuò)誤回滾機(jī)制,
因此建議Alpha應(yīng)用開發(fā)者提供msi(或基于msi)的安裝包,以便AlphaShell平臺更好的控制
和管理Alpha應(yīng)用。
本文發(fā)布于:2022-08-01 17:40:08,感謝您對本站的認(rèn)可!
本文鏈接:http://www.newhan.cn/falv/fa/78/51007.html
版權(quán)聲明:本站內(nèi)容均來自互聯(lián)網(wǎng),僅供演示用,請勿用于商業(yè)和其他非法用途。如果侵犯了您的權(quán)益請與我們聯(lián)系,我們將在24小時(shí)內(nèi)刪除。
| 留言與評論(共有 0 條評論) |