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


17

최소한 Windows에서 직접 정적으로 링크 된 실행 파일을 다운로드하여 직접 실행하거나 직접 설치하지 않고도 자신의 프로그램 및 실행 파일을 작성할 수 있음을 알았습니다.

이것이 저의 주요 요점입니다 ... 설치 과정의 목적은 무엇입니까? 아마 Windows 레지스트리 외에 의미 합니다. 그러나 실용성과 사용 목적을 위해 실행, 비 휘발성 저장소에 저장 및 모든 장치의 파일 시스템을 통해 액세스하고 OS에서 실행할 수있는 하나의 독립적 인 독립 실행 형 프로그램을 가질 수 있습니다. 따라서 설치 구성을 거치지 않고 거의 모든 규모의 훌륭한 프로그램이 완벽하게 작동 할 수 있다면이 "설치"사업과 관련하여 가장 중요한 것은 무엇입니까? 데이터베이스 나 다른 메타 데이터 / 액세스 구성 시스템과는 별도로, 후자가 설치된 실행 파일이 독립 실행 형과 동일한 방식으로 작동하고 작동하는 경우의 실제 차이점은 무엇입니까?

설치되지 않은 프로그램과 설치된 프로그램의 차이를 알고 있습니까?

추신 : 이것은 Windows OS에만 적용 될 필요는 없지만 유사한 기능을 구현하는 모든 것입니다.

답변:


16

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

파일 크기 문제

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

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

사용자 편의성 우려

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

  • 복잡한 프로그램의 설치 프로그램에는 종종 설치 프로그램의 일부로 사용자 친화적 인 그래픽 인터페이스를 사용하여 설정할 수있는 구성 옵션이 제공됩니다. 예를 들어 MySQL 또는 SQL Server 설치 프로그램을 참조하십시오. 설치 프로그램에서 "마침"을 클릭하기 전에 데이터베이스 서버를 시작하고 실행하는 전체 프로세스를 안내합니다.

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

호환성 문제

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

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

높은 특권 및 특별 서비스

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

설치 프로그램이 유용한 이유를 모두 설명했으면 다음과 같은 측면에서 몇 가지 관찰 사항이 있습니다.

  • 관리자 권한이 필요한 설치 프로그램으로 만 다운로드 할 수있는 프로그램까지도 많은 프로그램을 설치 프로그램에서 강제로 압축을 풀고 설치하지 않고 직접 실행할 수 있습니다. 다른 프로그램, 특히 오픈 소스 프로그램은 PortableApps에 의해 자체 포함 된 실행 파일로 다시 패키지됩니다 . 그것은 주목할만한 그 어떤 자신의 설치에서, 기능, 전시 오류 또는 다른 문제를 감소합니다 압축 해제 프로그램.

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

  • Windows 이외의 플랫폼에서도 커널 모듈을로드하는 기능이 필요한 프로그램에는 일종의 설치 프로그램이 포함되어 있습니다. 설치 프로그램은 커널 모듈을 컴파일하여 올바른 디렉토리에 설치합니다. 프로그램이 시스템 서비스 스크립트를 사용하여 시작될 데몬 인 경우 (예 :)에 설치 프로그램이 나타날 수도 있습니다 /etc/init.d. 이 유형의 "shrinkwrapped binary"는 GNU / Linux에서 덜 일반적인 배포 방법이지만 대부분의 Linux 배포는 여전히 설치 가능한 패키지 형태로 대부분의 소프트웨어를 제공하며, 각 소프트웨어는 루트 액세스 (관리자 액세스)를 설치해야합니다.


결론

설치 프로그램이 필요한 이유를 물었습니다. 짧은 대답은 우리가 엄격하게 말하지 는 않는다는 것입니다. 원칙적으로 리소스가없고 설치 프로그램이없는 하나의 자체 포함 된 실행 파일로 묶을 수없는 애플리케이션의 사례는 거의 없습니다. VMware Workstation과 같이 복잡한 작업이라도 관리자 권한을 자동으로 획득하고 하이퍼 바이저 커널 모듈을 작성할 수 있습니다. 디스크의 파일에 파일을 넣고 프로그램 시작시 동적으로 설치하고 실행 파일의 데이터 섹션에 번들로 포함 된 모든 리소스 (이미지, 사운드 등)를 제공합니다.

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

개인적으로 일상적인 작업에서 설치 프로그램이 매우 성가신 것으로 나타났습니다. 때로는 사용중인 컴퓨터에 대한 관리 권한이없는 경우 프로그램을 실행하고 싶어하기 때문입니다. 설치 프로그램을 수동으로 압축 해제하여 프로그램 파일을 추출한 다음 해당 파일을 올바르게 실행하는 데 약간의 경험이 있습니다. 그러나 항상 관리자 액세스 권한이있는 집에있는 개인용 PC에서는 설치 프로그램이 유익하고 편리합니다. 대부분의 설치 프로그램은 데스크탑 바로 가기 생성 여부와 같은 유용한 옵션을 제공하기 때문에 대신 수동으로 수행해야했기 때문입니다.


좋은 대답이지만 DirectX 및 런타임으로 여는 것은 의미가 없습니다. 첫째, DirectX의 유일한 런타임은 그 자체로 작성된 언어 (C) 내에 있습니다.

@TomTurkey 음 ... 뭐? 어떤 언어로 작성된 것이 중요합니까? 물론, 필요한 DirectX 구성 요소를 실행 파일에 정적으로 연결할 수는 있지만, 앞서 말했듯 이 많은 프로그램이 큰 라이브러리로이 작업을 시작 하면 파일 크기 문제가 발생합니다 (예 : Qt 4.x, 약 40MB 실행). ). 코드는 어딘가에 있어야하며 필요한 DirectX 버전이 이미 시스템에 설치되어 있다고 가정 할 수 없으며 패치되지 않은 Windows XP SP2에서 프로그램을 열면 오류가 발생합니다 나이.
allquixotic

4
오, 나는 당신이 나를 오해했다고 생각합니다. 내 대답에, 나는 DirectX 자체설치하는 것에 대해 이야기하지 않았습니다 . DirectX에 의존 하는 프로그램 설치에 대해 이야기했습니다 . 이러한 종속성을 충족시키기 위해 DirectX를 응용 프로그램으로 직접 컴파일하여 디스크 공간 낭비를 늘리거나 설치 프로그램에 적절한 DirectX 런타임이 설치되어 있는지 확인하는 작은 응용 프로그램을 번들로 묶을 수 있습니다. 중앙 집중식 시스템 위치에 배치합니다. 후자는 디스크 공간과 다운로드 크기 측면에서 훨씬 더 효율적입니다.
allquixotic

3
@allquixotic 또한 라이센스. 때로는 설치 프로그램과 관계없이 라이브러리에 재배포 라이센스가 부여되지 않을 수 있습니다. DirectX가 범주에 속할 수 있습니다. 잘 모르겠습니다. .NET 프레임 워크는 그렇게 생각합니다. 기술적 인 제한이 아니라 합법적 인 제한입니다. (.NET 프레임 워크에는 추가적인 기술적 제한이 있습니다. OS에 매우 밀접하게 통합되어 있습니다.)
Bob

1
op . 의견이 개진 된 의견입니다. 내 머리에.
allquixotic

3

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

  1. .net 프레임 워크 버전 또는 직접 X와 같은 필요한 라이브러리 (api)가 설치되어 있는지 여부

  2. 추가 시스템 DLL 파일을 시스템 폴더에 설치하십시오. 시스템 폴더에 이미 이러한 파일 (동일 버전)이 포함되어 있으면이 단계를 무시하십시오. 이 방법으로 동일한 DLL 파일의 여러 사본이 필요하지 않습니다.

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

  4. 말했듯이 레지스트리 수정. 이 단계는 실제로이 컴퓨터에서 응용 프로그램을 처음 실행할 때 수행 할 수 있으므로 중요하지 않습니다.

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

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


3

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

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

사용하기 쉬움

설치 관리자가 설치 과정을 안내합니다. 설치 관리자 .exe 또는 .msi (이전 버전은 고급 사용자가 아닌 경우)를 다운로드하여 실행합니다. 일반적으로에서 Program Files파일을 복사하고 시작 메뉴에 바로 가기를 생성 하는 설치 폴더를 선택 합니다. 완료 : 대부분의 경우 다음을 몇 번 클릭하면됩니다.

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

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

라이센스 계약

상용 응용 프로그램과 무료 응용 프로그램의 많은 응용 프로그램은 응용 프로그램을 사용하기 전에 라이센스 계약에 동의해야합니다. 라이센스 조항에 동의한다는 것을 인정할 때까지 설치가 진행되지 않습니다. 라이센스를 읽지 않아도 동의합니다.

의존성

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

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

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

보안

런타임에 취약점이 발견되면 응용 프로그램과 별도로 업데이트 할 수 있습니다. .Net 및 Visual C ++ 런타임 업데이트는 Windows Update를 통해 자동으로 설치됩니다.

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

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

기재

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


1
공유 구성 요소에 대한 보안 업데이트는 +1입니다. 내 대답에는 쓰지 않았습니다.
allquixotic

0

간단한 대답 : 독립 실행 형 exe를 실행하려면 컴퓨터에 라이브러리를 설치하지 않아도되며 레지스트리 항목이나 다른 구성 요소가 필요하지 않습니다.

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

대부분의 경우 Universal Extractor (비공식 업데이트 : here )를 통해 설치 관리자의 컨텐츠를 추출하고 Windows에서 관리 권한없이 프로그램을 실행할 수 있습니다. MSI 설치 프로그램은 lessmsi 로 압축을 풀 수 있습니다 .

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

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