2009-06-13 6 views
9

현재 NSIS로 만든 설치 프로그램이있는 프로젝트가 있지만 변경된 파일 만 있고 변경 내역이 표시되는 새 버전의 업데이트가 필요합니다. 대상 플랫폼은 windows입니다. 어떤 방법/제안이해야합니까?NSIS로 업데이트 설치 프로그램을 어떻게 만드나요?

+0

프로젝트를 완료 했습니까? 결국 당신은 무엇을 사용 했습니까? 아마도 대답 중 하나를 받아 들일 수있을 것입니다. –

+0

예, 완료했습니다 ... 그러나 내가 생각했던 것보다 더 복잡하기 때문에 이러한 방법 중 하나를 사용하지 않았습니다. 그래서 저는 업데이트를위한 풀 릴리즈 빌드를 실행하고 사용자가 어플리케이션을 실행하기 전에 다운로드하도록 요구했습니다. – staackuser2

+0

방금 ​​답변을 수락했습니다 ... 사용하지 않았지만 사용 가능한 최상의 방법처럼 보입니다. – staackuser2

답변

12

NSIS를 사용하여 재검토하고 싶을 수도 있습니다. 업데이트를 패치하고 배포하는 경우에는 Windows Installer 기능 (msiexec)을 사용하는 설치 프로그램 기술을 사용하는 것이 가장 좋습니다.

NSIS는 기본적으로 실행되는 프로그램으로, Windows Installer 유형 설치 프로그램을 사용하면 응용 프로그램을 Windows Installer msi 서비스에서 관리 할 수있는 기능 및 구성 요소로 분리해야합니다. MSI는 설치 한 제품의 버전, 설치 프로그램을 다시 실행할지 여부, 다른 버전의 2 가지 제품을 설치할 수 있는지 여부, 패치를 특정 버전의 제품에 적용 할 수 있는지, 유지 관리 모드로 실행하는지 여부 등을 추적합니다. 업데이트 및 설치와 관련된 다른 질문.

Windows Installer 기술로 변경하면 기본적으로 사용자가 요청한 대부분의 항목을 즉시 사용할 수 있습니다. NSIS (Windows Installer 기술을 사용하지 않음)를 사용하는 경우에는 직접 구현해야합니다.

예를 들어 AdvancedInstaller (http://www.advancedinstaller.com/)라고하는 꽤 포괄적 인 설치 빌더가 원하는대로 들립니다. 또 다른 인생의 트롤링 포럼과 뉴스 그룹을 보내고 싶다면 WiX라는 오픈 소스 제품이 있습니다.

+5

왜 내가 이것을 표시했는지 확실하지 않습니다. NSIS는 오픈 소스이지만 Windows를 실행하는 모든 작업을 마친 후에는 작업에 가장 적합한 도구를 생각해야합니다. –

1

가능한 한 가지 방법은 릴리스 된 버전과 릴리스마다 변경된 파일 목록이있는 다운로드 서버에 XML 파일을 저장하는 것입니다. 설치 프로그램은 설치된 파일 버전의 설치시 레지스트리 키를 작성합니다.

업데이트시 설치 프로그램은 XML 파일을 다운로드하고 구문 분석하고 현재 설치된 버전보다 높은 버전 번호를 가진 노드를 찾습니다. 설치 프로그램 페이지의 텍스트 상자에 모든 파일을 표시하고 사용자가 확인하면 설치 관리자가 모든 파일을 다운로드 한 다음 레지스트리를 최신 버전으로 업데이트합니다.

+0

저는 파일이 몇 개 밖에 없으며 거의 ​​모든 업데이트로 변경 될 것입니다. 그래서 나는 그들을 updater.exe에 번들로 묶기를 원했고 그 설치 프로그램을 전체 설치 exe 파일과 다르게 만들었습니다. 아직도 무엇이 최선인지 확실하지 않습니다. 어쩌면 전체 설치가 제 경우에 충분할 수도 있습니다. – staackuser2

3

이전에 언급 한 내용에도 불구하고 13 개의 사용자 정의 페이지가있는 NSIS. 나는 심지어 패치를 보았고 그것은 약간의 해킹이다. 조언의 주된 내용은 패치하는 것으로 생각되는 버전을 패치하고 사용 가능한 패치 플러그인 중 하나를 사용하는 것입니다.

파일을 비교하고 패치 변경 파일과 "설치"하는 데 필요한 NSIS 코드를 생성하는 여러 패치 기술이 있습니다. 나는 NSIS Patch Gen이 가장 적은 번거 로움으로 내가 원했던 것을 해냈다. 설명서는 약간 얇지 만 일단 "오 예치"라고 생각하면 알아낼 수 있습니다.

자동으로 생성 된 변경 로그에 약간의 문제가있을 것입니다. 난 당신이 변경 로그를 직접 (또는 적어도 각 응용 프로그램 변경과 함께 추가 변경 사항을 추가) 만들고 그냥 일반 응용 프로그램 파일처럼 그것을 포함하고 패치 생성기를 업데이 트하는 것이 좋습니다 것이 좋습니다. 당신은 당신의 코드의 작은 부분을 변경하는 경우에도 델파이와 같은

http://sourceforge.net/projects/nsispatchgen/

0

어떤 컴파일러는 최종 실행 파일의 변화를 많이합니다.

먼저 패치 할 가치가 있는지 확인해야합니다.

또 다른 고려 사항은 자체적으로 패치하는 것입니다. 패치는 일부 시스템 폴더에서 일부 바이러스 백신 소프트웨어에 의해 차단 될 수 있습니다.

마지막으로 증분 패치 데이터 크기가 원본 파일을 초과하여 커질 수 있습니다.

위의 주제에 따라 나는 패치를 제안하지 않습니다. 대신 전체 설치 프로그램 사용

1

cURL에 익숙합니까? http://www.shininglightpro.com/products/Win32OpenSSL.html http://curl.haxx.se/download.html#openssl

가 어떤 프로토콜을 다운로드합니다, 당신이 당신의 파일을 다운로드하는 데 사용할 수 있습니다. 명령 행 응용 프로그램입니다.

설치 프로그램에서 주 프로그램이 실행 중인지 여부를 먼저 확인하고 실행 중이 아니면 종료하고, 업데이트를 포함한 사이트의 배치 파일을 다운로드하려면 curl을 호출 한 프로그램을 예약하십시오 배치 파일.
다운로드하는 배치 파일은 말풍선을 사용하여 올바른 파일을 다운로드하여 응용 프로그램을 업데이트합니다. 프로세스는 업데이트 빈도에 따라 2 주마다 또는 한 달에 한 번 실행해야합니다.

설치 관리자의 제거 부분은 업데이트를 포함하여 해당 앱의 모든 부분을 제거 할 수 있어야합니다. 이것은 프로그램 파일의 하위 디렉토리에서 모든 파일을 제거하여 수행 할 수 있습니다.

RMDir /r /REBOOTOK '$INSTDIR' 
RMDir /r /REBOOTOK "$SMPROGRAMS\$StartMenuFolder" 
Delete '$SMPROGRAMS\$StartMenuFolder\gpl3license.lnk' 
Delete '$SMPROGRAMS\$StartMenuFolder\readme.lnk' 
Delete '$SMPROGRAMS\$StartMenuFolder\${PRODUCT_TITLE}.lnk' 
DeleteRegKey HKCU "Software\Your major subkey\${PRODUCT_NAME}" 
DeleteRegKey HKLM "Software\Microsoft\Windows\CurrentVersion\Uninstall\${PRODUCT_NAME}" 
DeleteRegKey /ifempty HKCU "Software\${PRODUCT_NAME}" 

PRODUCT_NAME은 (는) 템플릿과 같은 nsi 파일을 사용하기 때문에 만들어졌습니다! 이것은 설치 프로그램 파일의 제거 프로그램 섹션에 불과합니다.

관련 문제