注册 登录  
 加关注
   显示下一条  |  关闭
温馨提示!由于新浪微博认证机制调整,您的新浪微博帐号绑定已过期,请重新绑定!立即重新绑定新浪微博》  |  关闭

熊猫正正的博客

熊猫正正的天空

 
 
 

日志

 
 

iOS8下代码安装/卸载APP  

2015-11-08 17:45:56|  分类: IOS安全 |  标签: |举报 |字号 订阅

  下载LOFTER 我的照片书  |
转载:https://blog.0xbbc.com/2014/12/ios8%E4%B8%8B%E4%BB%A3%E7%A0%81%E5%AE%89%E8%A3%85%E5%8D%B8%E8%BD%BDapp/

iOS8下安装/卸载APP的代码,好久之前的了,还是贴出来吧,顺便把注释写上了。

 

#import <Foundation/Foundation.h>
#import <spawn.h>
#import <sys/wait.h>
#import <UIKit/UIKit.h>

/*!
 *  @brief  Mobile Installation 的回调定义
 */

typedef void (*MobileInstallationCallback)(CFDictionaryRef information);

/*!
 *  @brief  Mobile Installation 安装App (8.0)
 *  @param  bundlePath          IPA文件路径
 *  @param  parameters          unknown
 *  @param  unknown1            unknown
 *  @param  unknown2            unknown
 */

extern int MobileInstallationInstallForLaunchServices(CFStringRef bundlePath, CFDictionaryRefparameters, void *unknown1, void *unknown2) NS_AVAILABLE_IOS(8_0);
/*!
 *  @brief  Mobile Installation 卸载App (8.0)
 *  @param  bundleIdentifier    App的Bundle ID
 *  @param  parameters          unknown
 *  @param  callback            Mobile Installation 的回调
 *  @param  unknown             unknown
 */

extern int MobileInstallationUninstallForLaunchServices(CFStringRef bundleIdentifier,CFDictionaryRef parameters, MobileInstallationCallback callback, void *unknown)NS_AVAILABLE_IOS(8_0);

/*!
 *  @brief  为了稍后使用POSIX SPAWN
 */

extern char **environ;

/*!
 *  @brief  更新SpringBoard图标, 依赖uicache
 */

void uicache(void);

void uicache(void){
    posix_spawnattr_t attr;
    posix_spawn_file_actions_t fact;
    pid_t pid;
    char cmd[]="uicache";
    char *args[2];
args[0]=cmd;
args[1]=NULL;
    posix_spawnattr_init(&attr);
    posix_spawn_file_actions_init(&fact);
    posix_spawn(&pid,"/usr/bin/uicache",&fact,&attr,args,environ);
    int stat=0;
    waitpid(pid,&stat,0);
}

int main (int argc, const char * argv[]){
    @autoreleasepool{

#pragma mark
#pragma mark - Install
        CFStringRef path = CFStringCreateWithCString(kCFAllocatorDefault,"/PATH/TO/IPA/FILE"kCFStringEncodingUTF8);

        MobileInstallationInstallForLaunchServices(path, NULLNULLNULL);

#pragma mark
#pragma mark - Uninstall

        CFStringRef identifier = CFStringCreateWithCString(kCFAllocatorDefault,"APP.BUNDLE.ID"kCFStringEncodingUTF8);
        if (identifier != NULL) {
            MobileInstallationUninstallForLaunchServices(identifier, NULLNULL,NULL);

            CFRelease(identifier);
        }

#pragma mark
#pragma mark - UICache

        uicache();

    }
    return 0;
}



  评论这张
 
阅读(107)| 评论(0)
推荐 转载

历史上的今天

在LOFTER的更多文章

评论

<#--最新日志,群博日志--> <#--推荐日志--> <#--引用记录--> <#--博主推荐--> <#--随机阅读--> <#--首页推荐--> <#--历史上的今天--> <#--被推荐日志--> <#--上一篇,下一篇--> <#-- 热度 --> <#-- 网易新闻广告 --> <#--右边模块结构--> <#--评论模块结构--> <#--引用模块结构--> <#--博主发起的投票-->
 
 
 
 
 
 
 
 
 
 
 
 
 
 

页脚

网易公司版权所有 ©1997-2017