본문 바로가기

RPA

[UiPath] UiPath로 암호 압축(zip) 해제하기

본 내용은 패키지 버전 1.13.8, Studio  버전 2020.4.3으로 작성하였습니다.
Studio 2020.6 버전으로는 동작하지 않습니다. (2020.07.23 기준)

 

 

프로젝트 중 암호가 걸린 zip파일을 풀어야하는 일이 생겼다.
암호가 걸리지않은 zip파일의 경우는 invoke method를 이용해서 간단하게 압축을 풀수 있지만 암호가 걸린 경우는 그렇지 않았다.

구글링을 해본 결과 invoke method를 통해서는 암호 걸린 zip파일을 풀수 없다는 결론이 나왔다. (VBNet에서 제공하는 기본 method로는 암호가 걸린 압축파일을 풀 수 없음)
찾은 해결법은 총 2가지
1. BalaReva.ZipUnzip.Activities 
2. DotnetZip

1번의 경우 2019.4.1 버전이 마지막 업데이트인데 테스트 결과 압축이 풀리지 않았다.
2번의 경우는 Manage Package > All Packages 에서 dotnetzip을 검색하면 

아래의 코드는 DotnetZip by Henrik/Dino Chiesa을 사용하여 작성하였다.
패키지를 install한 후 invoke code를 사용하여 아래 코드를 invoke하면 된다.

 

//변수 초기화
Dim zipFile As String = strZipFile
Dim zipPath As String = strUnZipPath
Dim options As New Ionic.Zip.ReadOptions

//한글 깨짐 방지 Encoding
options.Encoding = System.Text.Encoding.GetEncoding("euc-kr")

Using zip As Ionic.Zip.ZipFile = Ionic.Zip.ZipFile.Read(zipFile, options)
   zip.Password = strPassword
   zip.ExtractAll(zipPath, Ionic.Zip.ExtractExisitingFileAction.DoNotOverwrite)
   //압축파일안에 또 압축파일이 있을 경우를 대비하여 압축 해제한 파일명을 strUnZipFile에 저장함
   //배열로 출력되기때문에 인덱스를 지정해주었음(0) 파일 개수가 1개
   strUnZipFile = zip.EntryFileNames(0)
End Using
Console.WriteLine(zipFile+" Unzip Success")

flow 참고
in/out argument 참고

 

 

* 복사 붙여넣기를 하면 종종 에러가 뜨게 되는데(~의 멤버가 아닙니다 등) 그 부분의 코드를 지운 뒤 다시 똑같이 써주면 해당 에러는 사라진다. (그래도 에러인 경우는 method가 바뀐 것)
본 내용은 패키지 버전 1.13.8, Studio  버전 2020.4.3으로 작성하였습니다.

Studio 2020.6 버전으로는 동작하지 않습니다. (2020.07.23 기준)