2012-04-16 3 views
6

오픈 소스 C# 응용 프로그램을 개발 중입니다. 잠시 동안, 나는 자신을 코딩 한 기본 .NET 설치 프로그램을 사용 해왔다. 그러나 최근의 변화로 인해, 설치자에게 많은 수의 파일을 추가해야하기 때문에 더 이상 실용적이지 않으며, 각 릴리스마다 변경 될 수 있습니다. ZIP 파일도 실용적이지 않습니다.C# App 용 설치자

나는 온라인에서 몇 가지 검사를했는데 MSI, ClickOnce,자가 압축 ZIP 및 NSIS 시스템을 (가장 유망한) 많이 보았습니다. 그들 중 누구도 내 필요에 정확히 부합하지 않는 것 같아서, 어떤 시스템을 사용할 지에 대한 조언을 찾고 있습니다.

내 프로그램의 실제 설치는 매우 간단합니다. 기본적으로 bin \ Release 디렉토리 (및 모든 하위 디렉토리)를 클라이언트의 컴퓨터에 복사하면됩니다. 필자는 .NET 설치 프로그램에 모든 파일을 포함시키고 어디로 가야하는지에 대한 파일 테이블을 유지함으로써이 작업을 임시로 수행했습니다.

불행히도, 저는 방금 내 응용 프로그램을 현지화했습니다. 이제 30 개 이상의 .resx 파일 (DLL에 컴파일되어 Visual Studio에서 추가 하위 디렉토리에 배치)과 30 개 이상의 폴더 및 DLL을 설치 프로그램에 추가하는 것은 비현실적입니다. 그래서 내가 왜이 수색을하고 있는지.

또한 몇 가지 다른 요구 사항이있다 :

  • 설치가 지정된 .EXE 사전 정의 된 디렉토리를 검색한다. (내 응용 프로그램은 대체 도구로 사용하도록 설계되었습니다.) .exe를 찾을 수없는 경우 해당 위치를 묻는 메시지가 나타납니다.
  • "OldApp.exe.bak"이 있는지 확인해야합니다. 그렇지 않으면 "OldApp.exe"의 이름을 "OldApp.exe.bak"로 바꿔야합니다.
  • 설치 관리자가 파일을 업데이트해야합니다. 즉, "Culture.de.dll"이 변경되지 않은 경우 설치 프로그램이 그대로 둡니다.
  • 설치 프로그램은 모든 Windows 버전의 모든 .NET IDE (VS, SharpDevelop, Mono 등)에서 작동하지만 다른 플랫폼에서는 작동하지 않아도됩니다.
  • 솔루션을 빌드 할 때 설치 프로그램이 자동으로 재생성되어야합니다. 즉, "빌드 후"섹션에서 실행 가능해야합니다.
  • 설치 프로그램 생성을 소스 코드 저장소에 추가 할 수 있어야합니다. 이것은 내 앱의 소스를 다운로드하는 사람이 설치 프로그램을 컴파일 할 수 있도록하기 위해서입니다.

긴 게시물을 작성해 주셔서 죄송합니다. 글을 적게 게시하는 것이 좋습니다.

+0

opensource 응용 프로그램의 이름/URL은 무엇입니까? –

답변

5

SharpSetup을 권하고 싶습니다. 꽤 유연한 구현을 위해 WiX와 C#을 결합합니다. 그다지 성취 할 수 없다는 것을 알았습니다.

+0

WIX와 다른 기능이 결합되어 있기 때문에이 제품을 사용했습니다. 굉장히 유용하다 :) – Xcelled194

2

우리는 광범위하게 WIX를 사용 http://wix.codeplex.com/

당신은 평범한에서 일을하고 일부 종료 루틴을 사용하여 설치를 사용자 정의 할 수 있습니다,하지만 당신은 그렇게 할 수 있도록 Windows 설치 프레임 워크에 후크가 있습니다.

소스 제어에 이러한 정의 파일 (XML)을 넣을 수 있으며 설치를 실행하도록 빌드를 구성 할 수 있습니다. 그러나 소스를 얻는 사람은 WIX 유틸리티를 설치해야합니다.

1

WIX은 좋은 것입니다. Wikipedia에 따르면이 제품은 Microsoft에서 자체 제품의 설치 프로그램을 제작하는 데 사용됩니다.

1

NSIS를 권하고 싶습니다.내 경험에 비추어 볼 때, 필자가 필요로하는 설치 프로그램 기능은 NSIS 문서 또는 커뮤니티 예제에서 다루어졌습니다. 내 Jenkins 빌드 서버와 통합 된 NSIS를 사용할 때 Visual Studio와의 NSIS 통합에 대해서는 언급 할 수 없습니다. Visual Studio에 NSIS 통합을 제공하는 Visual & Installer이라는 무료 Visual Studio Add-In이있는 것으로 보입니다. 나는 그것을 개인적으로 사용하지는 않았지만 현재 활발하게 개발되어 체크 아웃 할만한 가치가있을 것으로 보인다.