2013-08-12 2 views
0

어도비 에어에 업데이트 유틸리티가있어 애플리케이션 디렉토리의 기존 파일을 대체해야합니다. 하지만 응용 프로그램 디렉토리에서 파일을 이동하려고하면 파일을 삭제할 수 없다는 IOError가 발생합니다.어도비 에어에서 파일 객체를 사용하여 파일을 이동할 수 없습니다.

나는 다음을했다.

protected function onBtnTest(event:MouseEvent):void 
{  
    try 
    { 
    service = new File(File.applicationDirectory.nativePath + File.separator + 
     "assets" + File.separator + "oldFile.exe");   

    servic_ = new File(File.userDirectory.nativePath + File.separator + "newFile.exe"); 

    servic_.addEventListener(Event.COMPLETE, OnMoveComplete); 
    servic_.addEventListener(IOErrorEvent.IO_ERROR, OnIOError); 


    if(service.exists) 
     servic_.moveToAsync(service, true); 

    } 
    catch(err:Error) 
    { 
    trace(err.message); 
    } 


} 

private function OnMoveComplete(event:Event):void 
{ 
    trace("Move Complete.");  
    trace("File Deleted."); 
} 

private function OnIOError(event:IOErrorEvent):void 
{ 
    trace("OnIOError.");  
} 

항상 OnIOError 기능을 실행합니다. 하지만 같은 디렉토리를 다른 디렉토리로 옮기려고하면 잘 동작합니다. 어떻게해야합니까? 감사합니다

+0

파일을 삭제할 수없는 이유는 무엇입니까? 다른 세부 사항이 있습니까? 디렉토리에 대한 권한 문제입니까? 파일을 다른 열린 프로세스로 잠근 경우? 어떤 운영 체제에서 앱을 실행하고 있습니까? – JeffryHouser

+0

권한 문제라고 생각합니다. 다른 프로세스에 의해 잠겨 있지 않습니다. 창 7을 사용하고 있습니다. 응용 프로그램을 마우스 오른쪽 버튼으로 클릭하고 관리자 권한으로 실행하여 관리자 권한으로 실행합니다. 그것은 잘 작동합니다. 항상 관리자 모드에서 실행되는 설치된 응용 프로그램을 만들 수 있습니까? 감사합니다 –

+1

앱이 관리자 모드로 실행되는지 확인하기 위해 코드에서 수행 할 수있는 작업은 없습니다. 운영 체제 수준에서 사용자가 수행해야합니다. 일반적으로 사용자가 관리자 권한으로 항목을 실행할 권한이 있다고 가정 할 수 없습니다. 사용자가 액세스해야하는 디렉토리 (예 : applicationStorageDirectory 또는 userDirectory)를 사용하는 것이 가장 좋습니다. 전체 목록은 http://help.adobe.com/en_US/FlashPlatform/reference/actionscript/3/flash/filesystem/File.html – JeffryHouser

답변

1

그냥 한 가지 : 응용 프로그램 디렉토리에 쓸 수 없다는 것은 플렉스 보안입니다.

할 수있는 일이 없습니다. 죄송합니다. 다른 디렉토리 사용에 대해 생각해보십시오. 개인적으로 나는 응용 프로그램 저장소 디렉토리를 대신 사용합니다.

+0

에서 확인할 수 있습니다. 응용 프로그램 디렉토리에있는 파일을 바꿀 수 있습니다. 코드에서이 작업을 수행 할 수있는 방법이 없습니다. –

+0

불행히도, 아니요. 순수한 Flex에서는 불가능합니다. 그것은 보안 누출입니다. 다른 디렉터리 (사용자 디렉터리, 응용 프로그램 디렉터리 등)를 사용하는 것이 좋습니다. 그러나 ** 정말로 ** 응용 프로그램 디렉토리를 수정하고 싶다면 어쩌면 작업을 수행 할 외부 작업자 (명령 줄, 실행 파일 등)를 사용해보십시오. 그러나 나는 당신이 그것을하는 것을 추천하지 않는다. (그런데, 나는 그것을 결코 시도하지 않고있다) – blaazzze

+0

편집 : 단어를 잃어 버리고 모든 것이 바뀐다. 두 번째 줄에서 괄호 안에는 '응용 프로그램 디렉토리'가 아니라 '응용 프로그램 저장소 디렉토리'입니다. 나쁘다, 미안해. – blaazzze

관련 문제