독립형 실행 파일과 설치된 실행 파일의 차이점은 무엇입니까?

독립형 실행 파일과 설치된 실행 파일의 차이점은 무엇입니까?

적어도 Windows에서는 직접 정적으로 링크된 실행 파일을 다운로드하여 직접 실행할 수 있거나, 설치하지 않고도 자신만의 프로그램을 작성하고 실행할 수 있다는 사실(동적으로라도)을 발견했습니다.

이제 요점을 말씀드리겠습니다. 설치 프로세스의 목적은 무엇입니까? 내 말은 아마도Windows 레지스트리. 그러나 실용성과 사용 목적을 위해 실행될 수 있고, 비휘발성 저장소에 저장되고, 어떤 장치에 있든 파일 시스템을 통해 액세스하고, OS에서 실행할 수 있는 하나의 독립적인 독립 실행형 프로그램을 갖는 것이 가능합니다. 그렇다면 규모에 관계없이 많은 훌륭한 프로그램이 설치 구성을 거치지 않고도 완벽하게 작동할 수 있다면 이 "이 설치" 사업이 무슨 의미가 있을까요? 약간 당황스럽습니다. 데이터베이스나 기타 메타데이터/액세스 구성 시스템을 제외하고 후자(설치된 실행 파일)가 독립 실행형과 동일한 방식으로 수행되고 작동한다면 여기서 실제 차이점은 무엇입니까?

설치되지 않은 프로그램과 설치된 프로그램 사이에 내가 알지 못하는 차이점이 있습니까?

추신: 이는 Windows OS에만 적용할 필요는 없지만 유사한 기능을 구현하는 모든 OS에 적용할 수 있습니다.

답변1

프로그램이 독립형 실행 파일이 아닌 설치 프로그램으로 제공되는 데에는 몇 가지 이유가 있습니다.

파일 크기 문제

  • 크고 큰 종속성을 가진 프로그램은 종속성을 다운로드하고 공통 위치에 배치하는 웹 기반 설치 프로그램을 번들로 묶어 여러 프로그램에서 공유할 수 있습니다. 예를 들어 DirectX는 매우 큰 라이브러리입니다. DirectX에 의존하는 시스템의 모든 단일 프로그램이 전체 DirectX 런타임을 번들로 묶는다면 상당한 공간을 소비하게 됩니다. 4TB 하드 디스크 시대에는 문제가 되지 않는 것처럼 보일 수 있지만 SSD는 용량이 훨씬 작고 울트라북에서 일반적으로 사용되며 일부는 64GB에 불과한 저장 공간을 갖추고 있다는 점을 고려하세요. 물론 DirectX 외에도 다른 공유 라이브러리도 많이 있습니다.

  • 매우 크고 지속적으로 업데이트되는 프로그램은 인터넷에서 업데이트를 확인하고 업데이트가 있는 경우 필요한 변경 사항만 다운로드하는 실행 프로그램 또는 업데이트 프로그램과 함께 많은 작은 파일 모음으로 배포하는 것이 가장 좋습니다. 모든 대형 프로그램이 단일 단일 실행 파일로 제공되는 경우 파일 잠금으로 인해 디스크에서 실행 중인 실행 파일을 패치하는 것이 거의 불가능하므로 패치 프로세스에서 전체 실행 파일을 다시 다운로드해야 할 가능성이 높습니다. 또한 업데이트 프로그램은 파일이 어디에 있는지 알아야 하기 때문에 해당 디렉터리 경로를 레지스트리의 잘 알려진 위치에 저장하는 경우가 많습니다.

사용자 편의성 문제

  • Visual Studio 및 Microsoft Office와 같은 매우 큰 프로그램의 설치 프로그램을 사용하면 사용자가 해당 기능이 전혀 필요하지 않다는 것을 알고 있는 경우 특정 기능의 설치를 선택 취소할 수 있습니다. 여기에는 3가지 잠재적 이점이 있습니다. 디스크 공간 소비를 줄입니다. 설치 프로그램이 웹 다운로더인 경우 다운로드 시간과 대역폭 소비를 줄일 수 있습니다. 사용자 컴퓨터의 "복잡함"과 "부풀림"을 줄이고, 시작 메뉴/바탕 화면 바로 가기 수, 시작 프로그램 수 등을 줄일 수 있습니다.

  • 복잡한 프로그램의 설치 프로그램에는 설치 프로그램의 일부로 사용자에게 친숙한 그래픽 인터페이스를 사용하여 설정할 수 있는 구성 옵션이 함께 제공되는 경우가 많습니다. 예를 들어, 설치 프로그램에서 "마침"을 클릭하기 전에 데이터베이스 서버를 시작하고 실행하는 전체 프로세스를 안내할 수 있는 MySQL 또는 SQL Server 설치 프로그램을 참조하세요.

  • 설치자는 한 번만 입력하면 되는 라이센스 키와 같은 필수 정보를 사용자에게 묻는 메시지를 표시할 수 있습니다. 이를 통해 프로그램 자체의 디자인을 단순화할 수 있으며, 시작 시 수행하고 확인해야 하는 작업의 수를 줄일 수 있습니다. 이는 또한 사용자가 다음과 같은 확신을 가지게 만듭니다.한 번프로그램이 성공적으로 설치되면 "그냥 작동"해야 합니다. 프로그램 사용을 방해할 수 있는 "문제"가 프로그램 내에 더 이상 없습니다.

호환성 문제

  • 일부 프로그램은 다른 프로그램과 충돌합니다. 이것은 소프트웨어 엔지니어링의 단순하고 불행한 사실입니다. 다른 프로그램과 충돌하는 것으로 알려진 프로그램을 설치하기 전에 먼저 시스템을 확인하여 호환되지 않는 프로그램이 설치되어 있는지 확인하는 것이 도움이 되는 경우가 많습니다. 그런 경우 사용자에게 경고가 표시될 수 있습니다. 예를 들어, 이전 버전의 VMware 및 VirtualBox에는 매우 위험한 비호환 가능성이 있으며, 이로 인해 블루 스크린이 발생합니다. 한 프로그램이 다른 제품에서 사용자를 위해 이미 예약한 특별한 가상화 프로세서 명령을 사용하려고 하기 때문입니다. . 설치 프로그램 없이 단순히 최종 제품을 사용자에게 제공하려는 경우 다음 위치에서 호환되지 않는 제품이 있는지 확인해야 합니다.모든프로그램 시작으로 인해 프로그램 시작 속도가 느려질 수 있습니다.

  • 프로그램은 사용자별 수준이 아닌 시스템 전체 수준에서만 설치할 수 있는 다른 시스템 구성 요소에 종속될 수 있습니다. 이러한 특수 시스템 구성 요소를 설치하려면 일반적으로 관리자 권한이 필요하며 일반적으로 설치 프로그램을 실행해야 합니다.

높은 권한과 특별 서비스

  • 일부 프로그램의 기능은 운영 체제 변경에 따라 달라지며 이러한 변경 사항은 관리자 권한으로 이를 처리하는 일종의 설치 프로그램 없이는 쉽게 구현할 수 없습니다. 예를 들어, Wireshark와 같은 드라이버나 커널 모듈을 설치하는 프로그램은 다음을 수행할 수 없습니다.간단히왜냐하면 커널 모드 구성요소를 반드시 별도의 파일로 제공해야 하기 때문입니다. 가장 좋은 경우에는 사용자가 수동으로 아카이브의 압축을 풀고 장치 드라이버에 대한 일종의 설치 프로그램을 실행하도록 해야 합니다. 서비스는 설치에 관리자 권한이 필요한 또 다른 예입니다. 설치 프로그램 소프트웨어는 기본 프로그램 자체가 실행될 때마다 관리자 권한을 요청할 필요 없이 우아한 방식으로 관리자 권한을 얻는 데 특히 좋습니다(이는 많은 경우 불필요한 보안 노출이 됩니다).

설치 프로그램이 유용한 이유를 모두 제시한 후 다음은 다른 측면에서 관찰한 몇 가지 사항입니다.

  • 관리자 권한이 필요한 설치 프로그램으로만 다운로드할 수 있는 프로그램을 포함한 많은 프로그램은 설치 프로그램에서 강제로 "압축해제"되어 설치하지 않고 직접 실행할 수 있습니다. 다른 프로그램, 특히 오픈 소스 프로그램은 다음을 통해 자체 포함 실행 파일로 다시 패키징됩니다.휴대용앱. 주목할 만한 점은일부설치 프로그램에서 압축을 풀면 프로그램의 기능이 저하되거나 오류가 발생하거나 기타 문제가 발생합니다.

  • Windows 이외의 운영 체제에서는 루트 권한을 얻지 않고도 간단히 프로그램을 다운로드(또는 컴파일)하고 일반 사용자로 실행하는 것이 거의 항상 가능합니다. 운영 체제의 핵심 부분인 패키지와 관련하여 몇 가지 예외가 있지만 대부분의 사용자 응용 프로그램의 경우 패키지 관리자를 사용하여 시스템 전체에 설치하지 않고도 홈 디렉터리에서 실행할 수 있습니다. Windows의 대부분의 데스크톱 프로그램에는 설치 프로그램이 있으며 일반적으로 다른 방법으로는 설치할 수 없다는 점에서 Windows는 약간 특별한 경우입니다.

  • Windows가 아닌 플랫폼에서도 커널 모듈을 로드하는 기능이 필요한 프로그램에는 커널 모듈을 컴파일하고 올바른 디렉터리에 설치하는 일종의 설치 프로그램이 함께 제공됩니다. 프로그램이 다음과 같은 경우 설치 프로그램이 나타날 수도 있습니다.악마예를 들어 에서 시스템 서비스 스크립트를 사용하여 시작됩니다 /etc/init.d. 이러한 유형의 "축소된 바이너리"는 GNU/Linux에서 덜 일반적인 배포 방법이지만 대부분의 Linux 배포판은 여전히 ​​대부분의 소프트웨어를 설치 가능한 패키지 형태로 제공하며 각 패키지를 설치하려면 루트 액세스(관리자 액세스)가 필요합니다.


결론

설치 프로그램이 필요한 이유를 물으셨습니다. 짧은 대답은 다음과 같습니다우리는하지 않습니다--어쨌든 엄밀히 말하면 그렇지는 않습니다. 다음과 같은 애플리케이션의 예는 거의 없습니다.할 수 없다는 원칙적으로 리소스나 설치 프로그램 등이 없는 단일 독립 실행 파일로 번들링됩니다. VMware Workstation만큼 복잡한 것조차도 자동으로 관리자 권한을 얻고 하이퍼바이저 커널 모듈을 디스크의 파일에 기록한 다음 설치할 수 있습니다. 프로그램 시작 시 동적으로 실행 파일의 데이터 섹션 내에 번들로 포함된 모든 리소스(이미지, 사운드 등)를 제공합니다.

설치 프로그램 사용 여부는선택소프트웨어 제작자가 만들어야 하는 것입니다. 설치 프로그램을 사용하면 장점과 단점이 있습니다. 많은 공급업체가 소프트웨어 배포를 선택합니다.둘 다설치자로서,그리고독립 실행형 바이너리 또는 최소한 압축을 풀고 실행할 수 있는 ZIP 파일로 제공됩니다. 설치 프로그램이 절대적으로 필요하지 않은 소프트웨어의 경우 이는 매우 실용적인 방법이며 모두를 행복하게 만듭니다. 일반적으로 설치 프로그램과 함께 제공되지 않는 소프트웨어는 자체의 일부 구성 요소를 설치하기 위해 관리 권한이 필요한 소프트웨어입니다. 왜냐하면 설치 프로그램이 필요한 권한을 얻는 가장 우아한 방법이기 때문입니다.

개인적으로 저는 일상 업무에서 설치 프로그램이 매우 짜증스럽다고 생각합니다. 왜냐하면 가끔 사용 중인 컴퓨터에 대한 관리 권한이 없을 때 프로그램을 실행하고 싶기 때문입니다. 나는 설치 프로그램의 압축을 수동으로 풀고 프로그램 파일을 추출한 다음 해당 파일을 올바르게 실행한 경험이 꽤 있습니다. 그러나 항상 관리 액세스 권한이 있는 집에 있는 개인 PC에서는 설치 프로그램이 유익하고 편리하다고 생각합니다. 대부분의 설치 프로그램이 바탕 화면 바로 가기 생성 여부와 같은 유용한 옵션을 제공하기 때문입니다. 이 옵션이 없으면 수동으로 수행해야 했습니다.

답변2

설치 프로세스에서는 다음 항목을 고려합니다.

  1. .net Framework 버전이나 Direct X 등 필수 라이브러리(API)가 설치되어 있는지 여부.

  2. 일부 추가 시스템 DLL 파일을 시스템 폴더에 설치합니다. 시스템 폴더에 이미 이러한 파일(동일 버전)이 포함되어 있는 경우 이 단계를 무시하세요. 이렇게 하면 동일한 DLL 파일의 여러 복사본이 필요하지 않습니다.

  3. 시작 메뉴나 바탕 화면에 바로 가기를 설치하면 응용 프로그램을 빠르게 시작할 수 있습니다.

  4. 말씀하신대로 레지스트리 수정입니다. 이 단계는 실제로 이 컴퓨터에서 애플리케이션이 처음 실행될 때 수행될 수 있으므로 그다지 중요하지 않습니다.

  5. 매우 중요합니다. 소프트웨어(예: Google 데스크톱 바 또는 Yahoo! 바를 IE에 번들로 묶을지 여부)입니다. 이는 많은 독립 소프트웨어가 개발자에게 수익을 창출하는 방식입니다. 무료 소프트웨어를 사용하고 있다면 이 점을 잊지 마십시오.

우리는 "실행 가능한" 응용 프로그램을 고려하고 있기 때문에 IE 추가 기능이나 관련 항목을 설치할 수 있는 단계에 대해 논의할 필요가 없습니다.

답변3

독립 실행형 프로그램에는 외부 종속성이 없습니다.

.exe 파일일 필요는 없으며 관련 라이브러리 및 데이터 파일이 있을 수 있습니다. 아카이브를 폴더에 압축을 풀고 실행 파일을 실행합니다. 아카이브의 압축을 풀기만 하면 시작 메뉴에 바로가기가 추가되지 않으므로 압축을 푼 애플리케이션이 있는 폴더로 이동하여 해당 폴더에서 시작하거나 시작 메뉴에서 해당 바로가기를 수동으로 만들어야 합니다. 많은 컴퓨터 사용자가 어려움을 겪고 있습니다.

더 쉬운 사용

설치 프로그램은 설치 프로세스를 통해 사용자를 안내합니다. 설치 프로그램인 .exe 또는 .msi(고급 사용자가 아닌 경우 전자가 바람직함)를 다운로드하여 실행합니다. 일반적으로 설치 폴더를 선택하여 Program Files파일을 복사하고 시작 메뉴에 바로가기를 만듭니다. 완료되었습니다. 대부분의 경우 다음을 여러 번 클릭하기만 하면 됩니다.

그런 다음 시작 메뉴로 이동하여 응용 프로그램을 실행하십시오. 일부 설치 프로그램은 설치가 완료되면 응용 프로그램을 시작하는 옵션을 제공합니다.

응용 프로그램이 특정 유형의 파일이나 문서를 열면 설치 프로그램은 이를 셸에 등록합니다. 파일을 클릭하여 열 수 있습니다.

라이센스 계약

상업용이든 무료이든 많은 응용 프로그램은 해당 응용 프로그램을 사용하기 전에 라이센스 계약에 동의해야 합니다. 라이센스 조건에 동의할 때까지 설치가 진행되지 않습니다. 라이센스를 읽지 않았더라도 이에 동의한 것입니다.

종속성

실행 파일을 단순히 복사하는 것만으로는 충분하지 않은 경우도 있습니다. 응용 프로그램은 공유 구성 요소나 특수 런타임 라이브러리를 사용하는 경우가 많습니다. 예를 들어, .Net용으로 작성된 애플리케이션을 실행하려면 .Net 프레임워크 런타임을 설치해야 합니다. 정적으로 링크되지 않은 경우 Visual C++ 런타임도 설치해야 합니다. 설치 프로그램은 모든 종속성이 충족되는지 확인합니다.

응용 프로그램이 여러 개의 .exe 및/또는 .dll 파일로 구성된 경우 Visual C++ 런타임에 대한 동적 연결을 통해 디스크 공간이 줄어듭니다. .exe와 .dll이 정적으로 링크된 경우 런타임은 각 파일마다 복제됩니다.

라이브러리의 라이센스 조건은 정적 링크를 허용하지 않을 수 있습니다.

보안

런타임에서 취약점이 발견되면 애플리케이션과 별도로 업데이트할 수 있습니다. .Net 및 Visual C++ 런타임에 대한 업데이트는 Windows 업데이트를 통해 자동으로 설치됩니다.

실행 파일과 라이브러리가 정적으로 링크된 경우 애플리케이션 공급업체는 애플리케이션을 다시 컴파일하고 업데이트된 버전을 출시해야 합니다. 따라서 공유 런타임을 사용하면 개발자와 공급업체의 애플리케이션 유지 관리 비용이 줄어듭니다.

또한 설치하면 Program Files보다 안전한 환경을 제공합니다. 관리자 권한 없이는 파일을 수정하거나 삭제할 수 없습니다.

기재

많은 Windows 응용 프로그램은 레지스트리 항목에 의존합니다. 응용 프로그램이 COM을 사용하는 경우 모든 개체를 등록해야 합니다. 그렇지 않으면 응용 프로그램이 필요한 개체를 만드는 데 실패하고 시작되지 않습니다.

답변4

간략한 답변: 독립형 exe를 실행하려면 컴퓨터에 라이브러리를 설치할 필요가 없으며 레지스트리 항목이나 기타 구성 요소가 필요하지 않습니다.

설치된 파일~할 수 있다설치 프로그램 패키지에서 독립 실행형이지만 일반적으로 함께 설치된 다양한 구성 요소 및 라이브러리에 종속됩니다.

많은 경우 이를 통해범용 추출기(비공식 업데이트:여기), 설치 프로그램의 내용을 추출하고 Windows에서 관리 권한 없이 프로그램을 실행할 수 있습니다. MSI 설치 프로그램은 다음으로 압축을 풀 수 있습니다.lessmsi.

대부분의 다른 운영 체제에서는 모든 프로그램이 루트/관리자 권한 없이 사용자별 'bin', 'lib' 및 홈 디렉터리의 기타 디렉터리를 통해 실행될 수 있습니다. 개인적으로 저는 대부분의 경우 설치 프로그램을 경멸합니다. 왜냐하면 설치 프로그램이 없을 때 관리 권한 없이 프로그램을 사용하기 어렵게 만들기 때문입니다. 그러나 대기업에서는 일반 최종 사용자의 프로세스를 단순화하기 위해 그런 식으로 패키지합니다.

관련 정보