문제

나는 애호가 프로그래머 일 뿐이며 .NET ClickOnce 세계에서 코딩으로 자랐습니다.

하나가 프로그램을 "설치"하면 실제로 어떻게됩니까?!

또한 : 일부 작은 앱/도구는 EXE에서 실행됩니다. 대부분의 프로그램에 멋진 설치 프로세스가 필요한 이유는 무엇입니까? 장점, 단점, 장단점은 무엇입니까? 설치가 일반적으로 필요하거나 표준 실습과 비슷합니까?

추가 질문에 대해 사과합니다. 나는 단지 평범한 영어 또는 더 많은 평신도의 주요 요인에 대한 설명을 바라고 있습니다.

도움이 되었습니까?

해결책

당신은 정말로 많은 레거시 이유를보고 있습니다.

첫째, 항상 이런 식으로는 아니기 때문에 대조적입니다. Mac OS X의 "응용 프로그램"은 단순히 그 안에 특정 구조가있는 디렉토리이며 .app 확대. 애플리케이션을 설치하는 것은 응용 프로그램 폴더로 드래그하는 것만 큼 간단하며 제거하지 않으면 휴지통으로 드래그하는 것이 포함됩니다. 그게 다야, 멋진 설치 프로그램은 (보통) 필요하지 않습니다.

Windows에서 응용 프로그램은 일반적으로 "등록"해야하는 독립적 인 구성 요소로 구축됩니다. 여기에는 설치 프로그램이 Windows 레지스트리에 비트와 조각을 작성하여 Windows에 구성 요소를 찾을 수있는 위치를 알려줍니다. 그렇습니다. 응용 프로그램은 아마도 그것을 찾을 곳을 알아야 할 것입니다 (모두 같은 장소에 설치되어 있기 때문에) 그러나 수년간의 레거시와 구성 요소를 연결하는 다양한 방법으로 오늘날 우리가 어디에 있는지 우리가 얻었습니다.

일반적으로 Windows의 설치 프로그램 :

  • 파일을 복사합니다
  • 구성 요소를 등록합니다
  • 보안 권한 설정 (적절한 경우)
  • 시작 메뉴 및/또는 데스크탑에 아이콘 추가
  • Windows에게 "프로그램 추가 및 제거"에 프로그램을 추가하도록 Windows에게 알리기 위해 더 많은 내용을 레지스트리에 작성합니다.

다른 팁

이 프로그램은 컴퓨터가 작동하고 모든 경쟁 제품이 실패하는 방식으로 컴퓨터를 수정하려고합니다. 창에서 이것은 다음을 의미합니다.

  • 레지스트리에서 임의의 키 수정이 느리고 부러진 항목으로 가득 차있을 때까지
  • 소프트웨어가 사용할 수있는 단일 고대 버전으로 DLL을 교체
  • 가능한 많은 장소에 많은 파일을 퍼짐
  • 제거 스크립트를 작성하여 사용자가 OS를 다시 설치하지 않고 소프트웨어를 제거 할 수 있다는 환상을 유지합니다. 사용자 가이 스크립트를 실행하려고 할 가능성이없는 경우, "파일과 같은 질문으로 다시는이 작업을 수행하지 않도록 교육 할 수 있습니다. 예/아니오/아마도/모든 답변/모든 답변이 정확합니다. "
  • 컴퓨터가 부츠를 부팅 할 때 소프트웨어가 실행되도록 모호한 장소에 고리를 설치합니다. 부팅 프로세스가 느려질 수 있지만 소프트웨어는 즉시 시작되므로 지불해야 할 작은 가격입니다.
  • 오랜 시간이 걸리지 만 아무도 당신이 무엇을하는지 말할 수없는 모호한 일을하는 일을하는데 ( "설정은 무엇을 설정 하는가"
  • 디스크 공간이 충분하지만 32 비트 정수를 사용하여 1TB 디스크에 설치할 수 없는지 확인하십시오.
  • 중요한 작업은 설치에 실패하고 오류를 인쇄하는 것입니다. "설치가 실패했습니다. 이것은 바이러스 백신 소프트웨어가 설치되어 있기 때문일 수 있습니다. 비활성화하고 다시 시도하십시오." 이렇게하면 사용자가 안티 바이러스를 불신하기 시작할 것입니다 (특히 설치 프로그램의 모호한 버그가 트리거되지 않았기 때문에 두 번째 실행 중에 설치가 성공할 때). 심지어 망할 일을 제거하십시오.

    전 세계의 바이러스 저자도 사람들입니다! 스팸은 인터넷의 대부분의 트래픽을 보완합니다. 이는 그것이 중요하고 누가 지구상에서 가장 큰 커뮤니티의 일부가되고 싶지 않다는 것을 의미해야합니까? 게다가, 당신은 이런 식으로 큰 돈을 벌 수 있습니다. 약한 양심 및/또는 일부 범죄 에너지가 필요합니다.

  • 설치 프로그램의 매우 중요한 부분은 레지스트리 키를 늘리는 것입니다. HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows\CurrentVersion\Installer\UserData\S-7-9-23-64738-1349283462-3754093625-4491\IsYourWindowWideEnough\NotGivenUpYetHuh\GoAway\ImportantSystemInformation\Let See How You Can Handle Spaces\DamnIGottaStopSincePathsCanHaveOnl\ReinstalCtr

    이 중요한 시스템 카운터는 전체 시스템을 다시 설치하려는 강한 충동을 느낄 때까지 사용자가 불안정성의 환상을 만드는 데 도움이됩니다. 이를 통해 전문 IT 업계가 지원 시간을 판매, 새로운 컴퓨터, 더 많은 RAM, 더 큰 하드 디스크 또는 새로운 Windows 버전을 판매하는 데 도움이됩니다. ~ 해야 하다 더 좋으세요?).

참고 :이 텍스트를 진지하게 받아들이면 전문적인 도움을 구하십시오.

"멋진"설치 프로세스를 사용하는 이유

  1. 설치 프로세스를 녹음하여 재생 (수리) 또는 취소 (제거) 할 수 있습니다.
  2. 동작 Beyons 간단한 파일 사본 (레지스트리 키 작성, 구성 요소 등록, 기타 임의의 작업 수행

대부분의 설치의 "표준"옵션은 "프로그램 파일과 같은 표준 위치에서 일반적으로 원하는 모든 비트가 원하는 모든 비트가 사용자 정의없이 설치되며 일부 전문가 수준 기능이 활성화되지 않습니다.

Wikipedia가 우리에게 말합니다 일반적인 설치 프로그램이 다음을 생성하거나 수정합니다.

  • 공유 및 비 공유 프로그램 파일
  • 폴더/디렉토리
  • Windows 레지스트리 항목 (Windows 만 해당)
  • 구성 파일 항목
  • 환경 변수
  • 링크 또는 단축키

따라서 프로그램에 이러한 수정 사항 중 하나 이상이 필요한 경우 해당 작업을 수행하는 설치 프로그램을 작성해야합니다.

설치중인 프로그램에 따라 다릅니다. "설치"는 단순히 (비교적 작은) 실행 파일을 디렉토리로 복사하는 것부터 공유 라이브러리 설정, 패치 레벨 점검 (SP2 이상으로 실행되도록 설계되었습니다 - SP2 이상이 있습니까?)까지 다양합니다. 현재 사용자 또는 모든 사용자에 대한 시스템 구성. 그들 대부분은 또한 패키지 관리자에 설치를 등록하여 나중에 쉽게 제거 할 수 있도록합니다.

설치자 복잡한 소프트웨어 인프라를 배포하는 프로세스를 추상화합니다., 보통입니다 편리하고 자급 자족 사용자 인터페이스를 통해 아카이브 내에 포함.

이 UI는 그래픽이거나 유닉스 쉘 (예 : Bash)과 같은 명령 줄에서 출력되는 텍스트를 기반으로 할 수 있습니다. 그래픽 설치자의 경우, 대부분 소위 설치-부트 스트랩퍼가 사용되는 경우, 후자의 경우 Bash-Scripts, Microsoft Batch 스크립트 또는 명령 줄에서 실행되는 기타 스크립팅 언어 일 수있는 설치 스크립트가 사용됩니다.

에서 가장 간단한 경우 응용 프로그램은 간단합니다 실행 파일, 운영 체제가 파일을 실행하기 위해 파일로 무엇을 해야하는지 알고 있습니다. 응용 프로그램 파일은 하위 폴더 및 기타 보조 파일이있는 폴더에 상상할 수 있습니다. 하나의 아카이브에 포장되었습니다. 이 경우 설치 프로그램이 필요하지 않을 수 있습니다.

복잡한 소프트웨어 용, 전체 소프트웨어 플랫폼 및 기본 운영 체제 인프라와의 엄격한 통합 예를 들어 소프트웨어 제품의 저작권을 시행하는 것과 같은 바람직 할 수 있습니다.

Windows의 많은 설치 업체가 제공합니다 /e 또는 /extract 깃발. 예를 들어 setup.exe /e 설치 프로그램이 설치 스크립트를 실행하지 않고 아카이브 내용을 추출 할 수 있습니다. 나는 최근에 그냥해야했다 저것.

사고 방식으로 이동합니다

설치자는 기본 소프트웨어 자산이 아무리 간단하더라도 전문 소프트웨어를 제공하기위한 표준이되었습니다. 컴퓨터에 정통한 사용자 수가 증가하고 응용 프로그램을 하나의 데스크탑에서 다음 데스크탑으로 마이그레이션하려는 욕구로 휴대용 소프트웨어, 종종 간단한 아카이브로 전달되는 것은 점점 인기를 얻고 있습니다.

(설치 업체에 총 얼마나 많은 시간을 소비했는지는 모르겠지만 확실히 일의 순서입니다.)

설치자가 처리 할 수있는 작업은 다음과 같습니다.

  • 포장 풀기 (종종 이국적인 고 압축 아카이버 사용)
  • 시스템 하드웨어 요구 사항 보장
  • 충분한 하드 디스크 공간을 보장합니다
  • 소프트웨어 플랫폼 런타임 요구 사항 보장 (예 : '재분배')
  • 최신 소프트웨어 업데이트 확인
  • 원격 저장소에서 소프트웨어 다운로드
  • 프로그램 파일 및 폴더 작성 및/또는 업데이트
  • 구성 파일, 레지스트리 항목 또는 환경 변수를 만듭니다
  • 소프웨어 드라이버, 마운트 또는 마운트 장치를 설치하십시오
  • 설치 단계를 설명하고 링크, 바로 가기 생성을 통해 일상 사용자의 접근성을 높입니다.
  • 북마크 등을 통해 자체 소프웨어를 홍보 ...
  • 설치 중에 소프트웨어의 키 포인트를 제시하여 Slide By Slide를 제시하여 사용자가 실제로 소프트웨어를 시작할 수 있도록 인센티브를 만듭니다.
  • 소프트웨어 묶음을 통해 추가 수익을 창출하십시오
  • 커널 모듈을 구성하고 구성 요소를 자동으로 실행하는 (예 : 데몬, Windows-Services)
  • 소프웨어의 자동 패치
  • 폴더, 파일 및 사용자 권한 설정
  • UUIDS 참조 제작 소프트웨어를 설치 인스턴스에 연결하고 이식성을 방지합니다.

추신 : 다른 요점을 생각할 수 있다면 알려 주시면 통합하겠습니다.

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