7-Zip 자동 압축 풀림 아카이브 (SFX) 아카이브에서 추출한 후 파일을 실행할 수 있습니까?


40

압축 배포 가능한 응용 프로그램을 만들려고합니다.

현재 IDE (Visual Studio 2008-WPF 게시 응용 프로그램)에서 게시 한 파일 세트를 7-Zip SFX 아카이브로 압축하고 있습니다.

내 사용자는 7-Zip exe에서 "원 클릭 설치"가 가능한지 묻습니다. 아카이브를 만들 때 매개 변수 목록이 있습니다. 추출 된 설치 프로그램 실행 파일을 호출하기 위해 일종의 매개 변수 조합을 설정하는 방법이 있습니까?

불행히도 7-Zip 문서는이 시나리오를 다루지 않는 것 같습니다. 이와 비슷한 작업을 수행하는 유료 애플리케이션이 여러 개 있지만, 작성중인 도구를 라이센스가없는 코드로 유지하여 내부에서 사용할 수 있도록 노력하고 있습니다.


당신은 지불 한 사람을 가리킬 수 있습니까?
abhishek77in

답변:


35

7-Zip에서 LMZA SDK 를 다운로드해야합니다 . "installer.txt"파일에는 설명서가 포함되어 있습니다.

7zSD.sfx는 설치 프로그램을위한 SFX 모듈입니다. 7zSD.sfx는 msvcrt.dll을 사용합니다.

설치 프로그램 용 SFX 모듈을 사용하면 설치 프로그램을 만들 수 있습니다. 이러한 모듈은 임시 폴더로 아카이브를 추출한 다음 지정된 프로그램을 실행하고 프로그램 완료 후 임시 파일을 제거합니다. 설치 프로그램의 자동 압축 풀림 아카이브는 SFX_Module, Installer_Config, 7z_Archive의 3 개 파일을 결합하여 작성해야합니다. Installer_Config는 옵션 파일입니다. 다음 명령을 사용하여 설치 프로그램 자동 압축 풀림 아카이브를 작성할 수 있습니다.

copy /b 7zSD.sfx + config.txt + archive.7z archive.exe

config.txt 파일을 작성해야합니다.

구성 파일에는 설치 프로그램에 대한 명령이 포함되어 있습니다. 파일은 문자열에서 시작하여로 ;!@Install@!UTF-8!끝납니다 ;!@InstallEnd@!. 파일은 UTF-8 인코딩으로 작성해야합니다. 파일에 문자열 쌍이 포함되어 있습니다.

ID_String = "값"

Title 메시지 제목

BeginPrompt 프롬프트 메시지 시작

Progress값은 "yes"또는 "no"일 수 있습니다. 기본값은 "예"입니다.

RunProgram실행 명령. 기본값은 "setup.exe"입니다. 하위 문자열 %% T는 파일이 추출 된 임시 폴더의 경로로 대체됩니다.

Directory"RunProgram"의 디렉토리 접두사. 기본값은 ". \"입니다.

ExecuteFile 실행할 파일 이름

ExecuteParameters "ExecuteFile"의 매개 변수

예를 들면 다음과 같습니다.

 ;!@Install@!UTF-8!
 Title="7-Zip 4.00"
 BeginPrompt="Do you want to install the 7-Zip 4.00?"
 RunProgram="setup.exe"
 ;!@InstallEnd@!

1
예. 나는 그것을 시도했다. 약간 불편한 coz는 모든 것이 명령 줄이지 만 좋은 문서를 찾을 수 있습니다. 그리고 무료로 가능한 최고의 압축을 얻습니다.
Ganesh R.

@MikeG-그 링크는 훨씬 더 철저합니다. 감압 부분을 완전히 투명하게 만드는 방법을 설명했습니다. 아주 좋아요-감사합니다!
namuol

5
버전 9.35 베타 에서 "SFX 모듈이 LZMA SDK 패키지로 이동되었습니다"( 7-zip.org에서 사용 가능)에 유의하십시오 .
Lukas

21

합의 된 해결책은 맞지만 실제로 실제로해야 할 일을 설명하는 데 도움이되지는 않습니다. 나는 이것과 다른 많은 솔루션을 읽었으며 이것을 수행하는 방법에 대한 완전하고 완전한 간단한 지침을 찾을 수 없었습니다.

Molly7244가 게시 한 내용을 달성하는 방법에 대한 단계별 지침을 제공하는 블로그 게시물을 읽으십시오.

7zip -sfx 스위치를 사용하여 setup.exe를 실행하는 자동 압축 풀림 아카이브를 만드는 방법

내 블로그에서 링크가 죽을 수 있다는 사실에 주목했습니다.

1 단계-설치 폴더 설정

c : \ Install 폴더를 쉽게 만들 수 있습니다. 여기서 필요한 모든 파일을 복사합니다.

2 단계-7 설치 프로그램 압축

  1. .msi 및 setup.exe가있는 폴더로 이동하십시오.
  2. .msi와 setup.exe를 모두 선택하십시오.
  3. 마우스 오른쪽 버튼을 클릭하고 7Zip-> "아카이브에 추가"를 선택하십시오.
  4. 아카이브 이름을 "Installer.7z"(또는 선택한 이름)로 지정하십시오.
  5. 확인을 클릭하십시오
  6. 이제 "Installer.7z"가 있어야합니다.
  7. 이 .7z 파일을 c : \ Install 디렉토리에 복사하십시오.

3 단계-7z-Extra sfx 확장 모듈 얻기

7z-Extra를 다운로드해야합니다.

  1. 이 링크를 따라 7Zip다운로드하십시오.
  2. 베타 버전에 올바른 파일이 포함되어 있지 않으므로 9.20 버전 (@ May-2015)을 다운로드해야합니다.
  3. 직접 다운로드 링크.
  4. 7zip 추가 파일 추출
  5. "7zS.sfx"파일을 c : \ Install에 복사하십시오.

4 단계-config.txt 설정

UTF-8로 인코딩해야하므로 메모장 + +를 사용 하여이 텍스트 파일을 편집하는 것이 좋습니다. 다음 지침은 notepad + +를 사용하는 것입니다.

  1. Windows 탐색기를 사용하여 c : \ Install로 이동하십시오.
  2. 마우스 오른쪽 버튼을 클릭하고 "새 텍스트 파일"을 선택하고 이름을 config.txt로 지정하십시오.
  3. 마우스 오른쪽 버튼을 클릭하고 "NotePad ++로 편집"을 선택하십시오.
  4. "인코딩 메뉴"를 클릭하고 "UTF-8로 인코딩"을 선택하십시오.
  5. 다음과 같이 입력하십시오 :

    ;!@Install@!UTF-8!
    Title="SOFTWARE v1.0.0.0"
    BeginPrompt="Do you want to install SOFTWARE v1.0.0.0?"
    RunProgram="setup.exe"
    ;!@InstallEnd@!
    

[SOFTWARE v1.0.0.0]을 제품 이름으로 바꾸어 편집하십시오. 설정 파일의 매개 변수 및 옵션에 대한 참고 사항은 다음과 같습니다.

검문소

이제 다음 3 개의 파일이있는 "c : \ Install"폴더가 있어야합니다.

  1. Installer.7z
  2. 7zS.sfx
  3. config.txt

5 단계-아카이브 생성

이 지침은 웹에서 찾았지만 위의 4 단계 중 어느 것도 설명하지 않았습니다.

  1. cmd 창을 열고 Window + R-> cmd-> enter를 누르십시오.
  2. 명령 창에서 다음을 입력하십시오

    cd \
    cd Install
    copy /b 7zS.sfx + config.txt + Installer.7z MyInstaller.exe
    
  3. c : \ Install을 보면 MyInstaller.exe가 있음을 알 수 있습니다.

  4. 끝났습니다

인스톨러를 실행합니다

MyInstaller.exe를 두 번 클릭하면 메시지가 표시됩니다. 확인을 클릭하면 setup.exe가 실행됩니다.

자동화에 관한 PS 노트

이제 c : \ Install 디렉토리에서이 작업을 수행 했으므로 "Install.bat"파일을 작성하고 복사 스크립트를 넣습니다.

copy /b 7zS.sfx + config.txt + Installer.7z MyInstaller.exe

이제 새 버전의 배포 패키지를 다시 작성해야 할 때마다 Install.bat를 편집하고 실행할 수 있습니다.


2
이것이 정답입니다!
noelicus

의 명령 행 인수를 ExecuteParameters항목에 전달할 수 config.txt있습니까? 예를 들어 C:\Install\MyInstaller.exe some_file.txt 실행됩니다 setup.exe some_file.txt.
dthor

네 그렇습니다. matthew-lundberg가 그의 답변 에서 "SFX 실행 파일로 전달 된 인수는 Install.cmd 스크립트로 전달됩니다"
dthor

8

또한 NSIS를 봐야 합니다. 이를 사용하면 7-Zip에서 사용하는 것과 동일한 방법으로 압축 된 설치 프로그램을 만들 수 있으므로 ( LZMA ) 크기는 거의 같아야하며 설치 프로세스를 완전히 제어 할 수 있습니다.


2

jcrawfor74의 답변을 바탕으로 다음과 같은 추가 정보가 있습니다.

대신에 7zS.sfx , 당신은 또한 파일을 사용할 수 있습니다 7zS2.sfx을 . 이 버전은 훨씬 작은 버전 (28kB vs. 140kB)이지만 config.txt 파일을 지원하지 않습니다. 따라서 복사 명령에 그대로 둘 수 있습니다. 작은 구성 스크립트 만 작성하려는 경우 더 작은 EXE 파일을 작성할 수 있습니다.

작은 SFX 모듈은 질문하지 않습니다. 파일을 다른 모듈로 임시 폴더에 추출한 다음 실행 가능한 후보를 찾습니다. C \ Util \ SfxSetup \ SfxSetup.c의 소스 코드 (다운로드 페이지에서도 사용 가능)에 따라 이름과 확장명에 따라 파일의 무게를 다르게 측정 한 다음 최고 점수 파일을 선택합니다.

두 SFX 모듈 모두 Windows 10 이상에서 자동으로 Administrator로 실행되므로 구성 할 수 없습니다. 이 동작은 시스템 전체 설정에 바람직 할 수 있지만 항상 그런 것은 아닙니다. 또한이 결정은 Windows 버전을 명시 적으로 알려주는 매니페스트가 없기 때문에 파일 버전 데이터만을 기반으로합니다. Windows 호환성은 파일을보고 권한 상승 프롬프트로 연결되는 "Setup"과 같은 문자열을 찾습니다.

당신이 관리자 권한을 요구하지 않는 SFX 모듈을해야하는 경우, 소스, 또는 간단하게, 같은 리소스 편집기로 편집의 파일 버전 정보에서 SFX 모듈을 재 구축 할 수 이것 . 언급 된 Resource Hacker가 파일을 컴파일하는 경우 FileDescription 필드에서 "Setup"이라는 단어를 제거하고 EXE 파일을 저장하십시오. 또한 7zS.sfx 또는 7zS2.sfx 파일에서이 단계를 직접 수행하고이를 어딘가에 보관하여 상승하지 않은 SFX 패키지를 빌드하는 데 사용할 수 있습니다. 그리고이를 사용하여 파일 버전 정보를 완전히 사용자 정의하여 제품 이름이나 페이로드를 설명하는 제품 이름을 넣을 수 있습니다.

당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.