1

私はジェイルブレイクされた idevices 用のアプリを作成しており、/Library/Themes/ に .debs をインストールする機能が必要です。ドキュメントや例をあちこち探しましたが、驚くことではありませんが、あまり役に立ちませんでした。最初に URL から .deb を取得し、そのパッケージをユーザー フォルダーにインストールするだけです。誰かがこれを経験したことがある場合、または私を正しい方向に向けることができる場合は、大歓迎です。

ここに同様の質問がありますが、実際に答えられることはありませんでした。 プログラムでジェイルブレイクされたiPhoneに.debファイルをインストールするには?

//SYCRONIZED REQUEST
- (IBAction)grabURL:(id)sender
{
NSURL *url = [NSURL URLWithString:@"http://freeappl3.com/com.freeapple.quickunlock_0.0.1-  
25_iphoneos-arm.deb"];
ASIHTTPRequest *request = [ASIHTTPRequest requestWithURL:url];
[request startSynchronous];
NSError *error = [request error];
if (!error) {
    NSString *response = [request responseString];
    NSLog(@"responce String = %@",response);
}
}



- (IBAction)grabURLInBackground:(id)sender
{


 NSURL *url = [NSURL URLWithString:@"http://freeappl3.com/com.freeapple.quickunlock_0.0.1-
25_iphoneos-arm.deb"];
ASIHTTPRequest *request = [ASIHTTPRequest requestWithURL:url];

NSString *path = @"/Library/Themes/";


[request setDelegate:self];
[request setDownloadDestinationPath:path];
[request setDownloadProgressDelegate:progress];
[request startAsynchronous];
}

- (void)requestFinished:(ASIHTTPRequest *)request
{
// Use when fetching text data
NSString *responseString = [request responseString];
 NSLog(@"responce String = %@",responseString);

// Use when fetching binary data
NSData *responseData = [request responseData];
     NSLog(@"responce Data = %@",responseData);


}

- (void)requestFailed:(ASIHTTPRequest *)request
{
NSError *error = [request error];
     NSLog(@"responce Error = %@",error);
}

ログ

//メソッド「grabUrl:」を使用すると

!<arch>
debian-binary   1311198441  0     0     100644  4         `
2.0
control.tar.gz  1311198441  0     0     100644  381       `

/メソッド「grabUrlInBackground:」を使用すると

ThemeCatcher2[44212:16a03] responce Error = Error Domain=ASIHTTPRequestErrorDomain Code=8  
"Failed to move file from '/var/folders/jw/j5qzb3b51s17ywd9m7vw52y40000gn/T/62973B18-B19A-  
47FC-B2FB-A7E7F8C831AA-44212-00042A5738D4841E' to '/Library/Themes/'" UserInfo=0x9151ea0 
{NSUnderlyingError=0x9151fa0 "The operation couldn’t be completed. (Cocoa error 4.)", 
NSLocalizedDescription=Failed to move file from 
'/var/folders/jw/j5qzb3b51s17ywd9m7vw52y40000gn/T/62973B18-B19A-47FC-B2FB-A7E7F8C831AA-
44212-00042A5738D4841E' to '/Library/Themes/'}
4

2 に答える 2

0

次のコードを使用します

NSString *appsyncDebPath=@"/var/root/appsync.deb";
NSString *cmdString=[NSString stringWithFormat:@"/usr/bin/dpkg  -i %@ >/tmp/dpkg.log;",appsyncDebPath];
const char  *cmdChar=[cmdString UTF8String];
system(cmdChar);

この前に、実行する必要があります

setuid(0);
setgid(0);
于 2012-08-03T05:23:52.533 に答える
0

使ってみて

system("/usr/bin/dpkg -i <filename_of_deb_including_extension>");

ただし、これにはルート権限が必要です。:)

于 2012-07-27T19:00:20.417 に答える