문제

한때 Delphi 컴파일 EXE를 더 작은 다운로드 크기로 압축하는 멋진 작은 압축 유틸리티가 있었지만 지금은 찾을 수 없습니다.어떤 권장 사항이 있습니까?

또한 이러한 종류의 유틸리티를 사용할 때 단점이 있습니까?(저는 주로 시골/전화 접속 사용자의 다운로드 시간을 단축하기 위해 사용합니다.)


관련 질문: UPX를 사용하여 Windows 실행 파일을 압축할 때 단점이 있습니까?

도움이 되었습니까?

해결책

몇 년 전, 나는 실행 파일을 압축하여 다운로드를 더 작게 만들었습니다.

내가 한 일과 내가 당신에게 추천하는 것은 설치 프로그램과 같은 설치 프로그램을 사용하는 것입니다. 이노 설정 대신에. 프로그램을 설치/제거하는 단일 EXE를 생성 할뿐만 아니라 별도의 압축기만으로도 실행 가능만으로도 EXE를 압축합니다.

프로그램이 설치되면 압축 압축이 발생하므로 바이러스로 보이지 않으며 부하 시간이 증가하지 않습니다.

따라서 더 작은 다운로드 크기와 전문적인 설치 스크립트의 이점을 동시에 얻습니다.

PS 이노 설정은 무료입니다.

다른 팁

권장 사항은 다음과 같습니다.

  • EXE 압축기는 응용 프로그램이 바이러스처럼 보이게 할 수 있습니다 (자체 수정)
  • gzip/zip은 압축에도 효과적이며 앱에 땜질하지 않습니다.
  • exe compressors는 앱의로드 시간을 증가시킵니다 (다른 문제인 설정 프로그램에 대해서만 이야기하지 않는 한

이 미쳤던 사이트는 내가 먼 과거에 들었던 논쟁을 불러 일으 킵니다 (오늘은 사실이든 아니든, 확실하지 않습니다. 현대 패커는 아마도 오늘 다른 전략을 가질 것입니다) 이 기사는 Win32를 참조합니다! :)

http://topic.csdn.net/t/20000408/08/6785.html

Windows 95/98 및 NT와 같은 최신 멀티 태스킹 OS는 "가상 메모리"시스템을 사용합니다. 프로그램이 시작되면 DOS 프로그램의 경우와 마찬가지로 모든 코드가 시작마다 메모리에로드되지 않습니다. 대신, 적극적으로 실행되는 코드의 일부만 메모리에 저장됩니다. 예를 들어, 프로그램에 메뉴에 인쇄 옵션이 있고 인쇄를 처리하는 코드가 있습니다. 이 코드는 인쇄 기능이 사용자가 처음 선택하면 메모리에만로드됩니다. 코드가 메모리에로드 된 후 인쇄 기능이 잠시 동안 사용되지 않으면 시스템은 코드를 "파괴"하여 다른 응용 프로그램에 필사적으로 메모리가 필요하다면 메모리를 제거합니다. 이것은 "페이징"이라는 프로세스의 일부이며 프로그램에 완전히 투명합니다.

Win32에 따라 페이징은 메모리를 보존합니다. 프로그램의 여러 인스턴스 (또는 DLL)가 코드에 대해 동일한 메모리를 공유하는 것입니다. 다시 말해, 정상적인 상황에서는 프로그램의 100 인스턴스를 시작하고 인스턴스를 시작하는 사이에 코드에 할당 된 물리적 기억의 양에는 실제 차이가 없습니다.

모든 Win32 프로그램이 DOS 프로그램과 같이 행동하고, 모든 것을 메모리에로드하고 프로그램이 종료되고 여러 인스턴스간에 메모리를 공유하지 않을 때까지 유지하는 경우, 물리적 메모리가 제한된 양의 시스템에서 얼마나 빨리 떨어질 수 있는지 상상할 수 있습니다. 디스크 스왑 시작.

그러나 이것이 바로 현재 Win32 EXE 압축기가 EXE/DLL에하는 일입니다! 그들은 모든 코드를 메모리로 압축하고 종료 될 때까지 유지함으로써 OS의 페이징 시스템에 완전히 반대합니다. 또한 코드는 EXE 파일의 "원시"형식으로 저장되지 않기 때문에 (예 : 메모리에 저장되는 방식과 동일한 방식) OS는 여러 인스턴스간에 코드를 공유 할 수 없습니다.

나는 델파이를위한 특별한 사람을 모르겠지만 upx 이런 종류의 것에 대해 매우 인기가 있습니다. 유일한 단점은 실행 파일이 출시 될 때 압축을 압축해야하며 시간을 먹을 수 있다는 것입니다. 그러나 SANELY 크기의 실행 파이브에는 매우 빠른 것 같습니다.

당신이 생각하는 것은 아마도입니다 Aspack - 델파이로 작성된 EXE 압축기이지만 모든 EXE를 압축합니다. 그래도 델파이 엑스 (Delphi Exe)에서는 더 잘 될 수 있습니다. 다운로드 시간에 저장하기 위해 EXE 압축기를 사용해서는 안된다는 다른 답변에 동의합니다. EXE 압축이 좋은 생각이지만 일반적으로 그렇지 않은 특정 상황이있을 수 있습니다.

대신 7ZIP 압축을 사용하는 것을 찾을 수있는 경우 좋은 설치 빌더를 사용하십시오. 알아요 installaware 최대 압축을 위해 내부적으로 7zip을 사용합니다. 귀하가 소유 한 델파이 버전에 따라 설치 라이센스도있을 수 있습니다.

다른 것이 없다면 기본 설치 동작으로 자체 추출 아카이브를 구축 할 수 있습니다. 7zip 무료로. 설치자를위한 SFX에 대한 별도의 다운로드입니다.

사용 upx 최대 압축 용 LZMA 옵션.

upx --lzma yourfile.exe

압축된 EXE 또는 DLL의 가장 큰 불편함은 OS가 여러 인스턴스 간에 코드를 공유할 수 없다는 것입니다.
따라서 메모리를 낭비하고, 인스턴스를 시작할 때마다 압축을 풀어야 하며, 압축 설치에 비해 다운로드 이점도 없이 바이러스와 유사한 동작을 나타냅니다.
긍정적인 경우는 네트워크 드라이브에서 직접 시작할 때입니다.

터미널 서버 (Citrix와 같은)는 압축되지 않은 경우 응용 프로그램 바이너리에 대해 동일한 메모리를 사용한다고 생각합니다. 압축 된 exe가 시트릭스 환경에서 작은 재난 냄새를 맡을 수 있음을 의미합니다.

upx 델파이 특정은 아니지만 작동해야합니다.

나는 몸집이 작은 것을 사용합니다 : http://un4seen.com/petite/

나는 또한 UPX에 투표 할 것입니다. 언급 된 단점 외에도 기본 역 엔지니어링과 절름발이 "자원 해커"도구로부터 보호됩니다. 그건 그렇고, 대부분은 압축 실행 파일을 열지 못합니다.

나는 델파이 실행 파일에서 UPX를 사용하는 것에 대한 질문을 여기서 잠시 후에 요청했고, 나는 훌륭한 응답을 얻었습니다.

UPX를 사용하여 Windows 실행 파일을 압축 할 수있는 단점이 있습니까?

당신이 사용할 수있는 pecompact 사람들은 쉽게 해독 할 수없고 테스트가 보여 주듯이 (메인 페이지에 표시되고, 조금만 스크롤) Aspack 또는 Upx보다 낫습니다. 이전 Delphi 프로젝트에서 사용하고 있습니다.

라이센스 : CC-BY-SA ~와 함께 속성
제휴하지 않습니다 StackOverflow
scroll top