TRUEUPDATE升级系统

本文介绍如何利用TrueUpdate工具实现软件的在线更新功能。通过详细的系统规划、目录结构及升级流程说明,展示了如何使用Lua脚本来处理复杂的升级业务。

     在线更新系统对于现代软件来说太重要了,这里介绍用一家加拿大公司出品的TrueUpdate构建你的升级系统.TrueUpdate是使用lua来应付复杂多变的升级业务。 升级简单流程是这样的:运行trueupdate客户端,下载升级脚本,执行脚本,脚本里面执行下载补丁。

不多说了,直接给出我的方案:

   
系统规划:
1.proj1 // 升级项目
    
     sid1  // 升级项目id
    
     client_script // 升级客户端脚本,基本不会变
        
     current_version
         version_id_current  // 版本id
         server_script_current // 升级服务端脚本,随着升级,不断更新
         patch_current // 当前补丁,随着升级,不断更新
    
     
     version1
         server_script1
         patch1
     version2
         server_script2
         patch2   
        
     目录结构(ftp://192.168.1.134/true_update):
       
        update_client.exe
        sid_version_id_client_script.tu
        sid_version_id_server_script.tu
        sid_version_id_patch.zip
       
        .......
       
           
 
 proj2 (sid2)
     ....
    
    
升级流程:

     程序启动;
     if ( current_version < server_version )
     {
       
        调用update_client.exe;
        执行下载sid_version_id_server_script.tu;
        运行sid_version_id_server_script.tu;
        下载补丁id_version_id_patch.zip;
        current_version = server_version;
        提示用户升级成功;
     } 
    
     正常启动;  
    
    
表结构:

create table proj
{
   sid,
   client_script,
   version_id_current,  // 版本id
 
  
};

create table version
{
   sid,
   version_id,
   script_server,
   patch
}   
    
      
get_latest_version.aspx(client_sid)
{
      select version_id_current from proj where sid=clent_sid;
      return version_id_current;
}                

 

 

Tiger Update控件使用指南 Tiger Update是Tiger Installer安装制作软件附带的一个控件,它可以帮助 你轻松地在你的软件上加入自动更新功能。这个控件是免费而且开放源代码的。 Tiger Update实现自动更新实现的原理如下: 1. 通过Tiger Installer制作安装程序和升级包 2. 在一个Web Server上增加一个取得最新版本的链接和一个下载升级包的链接。 3. 软件通过Tiger Update组件取得最新版本和调用升级升级。 Tiger Update控件的安装 1. 用Delphi(6/7)打开TigerUpdate60.dpk,编译安装 2. 点击Delphi的菜单"Tools->Environment Options.."进入 Environment Options..对话框,在Library页面中把Tiger Update控件所在的 目录加入到Library Path中 3. 安装完毕。 Tiger Update控件的属性和方法 property Version : String; 软件的当前版本。 property VersionURL : String; 取得最新版本的URL。 property DownloadURL : String; 下载升级包的URL。 property LatestVersion : String; 最新版本。 function Download : Boolean; 下载升级包,并且执行升级。 安装程序和升级包的制作 安装程序和升级包制作参考Tiger Installer使用指南,通过菜单“文件->新建->本项目升级包”就可以创建当前项目的升级包。升级包会和原来的安装融合在一起,卸载以后原来安装的对象和历次升级包安装的对象都会被清除干净。 Tiger Update自动更新的流程 首先从LatestVersion取得最新版本,然后和现有版本比较,如果最新版本比现有版本新就执行Download方法更新软件。注意,执行安装包的时候会等待主程序结束,防止不能更新主程序的情况发生,所以在执行Download方法后如果返回值是True表明更新下载成功,升级包已经启动,主程序必须马上关闭,升级包会等待10秒钟,超过了10秒将会报超时错误。 范例: 在需要强制更新软件的情况下(比如某些C/S系统,为了保证数据安全,所有客户端的版本必须是最新的),可以在主程序的Dpr文件加上下面的代码: //以下的代码适合需要强制升级的情况 with TTigerUpdate.Create(nil) do begin try VersionURL := 'http://127.0.0.1/Update.asp?Command=Version'; DownloadURL := 'http://127.0.0.1/Update.asp?Command=Download&Version=<VERSION>'; Version := '1.01'; if (LatestVersion > Version) and Download then Exit; finally Free; end; end; //////////////////////////////////////// 这样每次主程序运行都会检查并更新程序 Web服务器的Asp范例 <%if request("command") = "Version" then if now >= "2005-3-27 00:00:00" then response.Write("1.01") else response.Write("1.00") end if else if request("command") = "Download" then if request("version") >= "1.00" then Response.Redirect("http://127.0.0.1/Update.exe") else Response.Redirect("http://127.0.0.1/Update.exe") end if end if end if %> 上面这个简单的Asp可以根据用户设定的更新时间更新软件,同时还可以根据客户端的版本提供不同的升级包。
<think>我们正在处理用户的问题:如何将OpenHarmony中的普通应用升级系统应用。 根据OpenHarmony的机制,普通应用和系统应用的主要区别在于权限和运行环境。系统应用通常具有更高的权限,能够访问更多的系统资源。 在OpenHarmony中,系统应用通常需要满足以下条件: 1. 应用需要被预置到系统分区(如/system/app/目录下)。 2. 应用需要具有系统级权限,这通常需要在应用的配置文件中声明相应的权限,并且这些权限需要在系统权限白名单中。 3. 应用可能需要使用系统API,这需要应用具有系统级签名。 因此,将普通应用升级系统应用的步骤大致如下: 步骤1:获取系统签名 系统应用需要使用系统签名证书进行签名。通常,设备厂商会持有系统签名证书。因此,需要联系设备厂商获取系统签名证书,并使用该证书对应用进行重新签名。 步骤2:修改应用的安装包信息 在应用的配置文件中(config.json),需要声明系统应用所需的权限和功能。特别是,需要声明系统应用特有的权限(如ohos.permission.SYSTEM_APP_PERMISSION等,具体权限名称可能因版本而异)。 步骤3:将应用预置到系统分区 将签名后的应用安装包(通常是.hap文件)放入系统镜像中的/system/app/目录下。这样,在系统启动时,该应用会被预置安装。 步骤4:重新编译系统镜像 由于系统分区是只读的,因此需要将修改后的系统分区重新打包成镜像,并烧写到设备上。 步骤5:验证应用权限 启动设备后,检查应用是否具有系统权限,并能够正常调用系统API。 注意:上述步骤需要开发者具有系统源码的编译环境,并且能够重新烧写系统镜像。同时,系统签名证书的获取通常需要与设备厂商合作。 另外,根据引用[4]中提到的系统调用机制,系统应用可能通过VDSO(虚拟动态共享库)机制来加速系统调用,但这对于应用开发者来说是透明的。 引用[3]中提到的HUKS(通用密钥库系统)是系统级服务,如果应用需要访问密钥管理功能,那么升级系统应用后,可以通过系统API调用HUKS服务。 下面是一个示例,展示如何修改应用的配置文件(config.json)来声明系统权限(注意:具体权限名称需要参考对应版本的OpenHarmony文档): ```json { "app": { "bundleName": "com.example.systemapp", "vendor": "example", "version": { "code": 1, "name": "1.0" }, "apiVersion": { "compatible": 3, "target": 3 } }, "deviceConfig": {}, "module": { "package": "com.example.systemapp", "name": ".entry", "deviceType": [ "phone" ], "distro": { "deliveryWithInstall": true, "moduleName": "entry", "moduleType": "entry" }, "abilities": [ { "name": "MainAbility", "icon": "$media:icon", "description": "$string:mainability_description", "label": "$string:app_name", "launchType": "standard" } ], "reqPermissions": [ { "name": "ohos.permission.SYSTEM_APP_PERMISSION" // 声明系统应用权限 }, // 其他所需权限 ] } } ``` 但是,请注意,仅仅声明权限是不够的,该权限还必须在系统的权限白名单中。这通常需要在系统源码中进行配置(例如在/etc/permissions目录下添加该权限的定义)。 由于这个过程涉及系统底层的修改,因此普通开发者可能无法独立完成,需要与设备厂商或系统开发者合作。 相关问题: 1. 如何获取OpenHarmony的系统签名证书? 2. 如何将应用预置到OpenHarmony系统镜像中? 3. OpenHarmony系统应用有哪些特殊的权限? 4. 如何验证应用是否成功升级系统应用? 5. 系统应用和普通应用在调用系统API时有何不同?</think>### OpenHarmony普通应用升级系统应用的步骤 在OpenHarmony中,将普通应用升级系统应用需要修改应用权限、签名机制和安装位置,具体步骤如下: --- #### **1. 获取系统签名证书** 系统应用必须使用**平台签名证书**(如`openharmony.p12`)进行签名: - 证书路径:`/openharmony/build/templates/certificates` - 使用DevEco Studio对应用重新签名: ```bash ./sign_tool sign -p [签名证书路径] -i [原始.hap文件] -o [签名后.hap文件] ``` --- #### **2. 修改应用权限声明** 在`config.json`中声明系统级权限: ```json { "app": { "bundleName": "com.example.systemapp", "vendor": "example", "version": { "code": 1, "name": "1.0" } }, "module": { "reqPermissions": [ { "name": "ohos.permission.INSTALL_BUNDLE", // 系统安装权限 "reason": "系统应用能力" }, { "name": "ohos.permission.UPDATE_CONFIGURATION", // 系统配置更新权限 "reason": "修改系统设置" } ] } } ``` --- #### **3. 预置到系统分区** 将签名后的.hap文件放入系统镜像的预置目录: - **路径**:`/system/app/[应用名]/` - 修改系统构建配置文件`BUILD.gn`: ```gn ohos_prebuilt_hap("system_app") { hap_name = "SystemApp" source = "path/to/signed.hap" install_enable = true subsystem_name = "applications" part_name = "prebuilt_hap" } ``` --- #### **4. 重新编译系统镜像** 1. 执行全量编译: ```bash ./build.sh --product-name [设备型号] --build-target systemimage ``` 2. 烧写新镜像到设备: ```bash fastboot flash system out/[设备型号]/system.img ``` --- #### **5. 验证系统应用权限** - 检查应用权限: ```bash aa dump -a [应用BundleName] | grep "permissions" ``` - 确认应用运行在特权进程上下文(uid通常为`system`或`root`)[^4]。 --- #### **关键机制说明** 1. **系统签名验证**:启动时内核验证应用签名是否匹配平台证书[^3]。 2. **权限隔离**:系统应用通过`SVC`指令切换到内核态执行特权操作[^4]。 3. **资源访问**:系统应用可通过VDSO机制直接读取内核数据(如硬件配置)[^1]。 --- ### 相关问题 1. 如何验证OpenHarmony系统应用的签名有效性? 2. 系统应用与普通应用在权限管理上有哪些核心区别? 3. 预置系统应用时如何避免影响系统启动速度? 4. 系统应用如何安全调用HUKS密钥管理服务?[^3] 5. 非预置系统应用能否通过动态加载升级?[^4]
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值