2014-05-19 1 views
0

사용자에게 단일 실행 파일로 배포되는 일부 응용 프로그램을 개발해야합니다. 사용자는 "다운로드"와 같은 버튼을 클릭하고 exe 파일을 얻은 다음 실행하고 결과를 다시 내 사이트에 업로드해야합니다. 앱에 설치 프로그램이나 이와 유사한 내용이 있으면 안됩니다. 한 번 실행하고 결과를 얻으십시오.C# 어셈블리에 직접 구성 추가

내 응용 프로그램에는 "myapp.exe"와 같은 주요 실행 파일과 현재 사용자에 따라 달라지는 여러 데이터 파일이 있습니다. 이제 myapp.exe, datafiles 및 현재 사용자 구성을 포함하는 SFX zip 아카이브를 생성해야합니다. 사용자가 "다운로드"를 클릭하면 보관할 사용자 데이터를 추가하여 사용자에게 제공합니다.

SFX 아카이브는 매우 지루하고 유지하기가 어렵다는 문제가 있습니다. 나는 그것의 인터페이스를 변경할 수 없다. SFX arxhives를 만들 수있는 하나 또는 두 개의 zip 라이브러리 만 사용할 수있다.

다른 컨테이너를 사용하거나 "즉시"내 유틸리티의 리소스에 사용자 데이터를 압축 할 수있는 방법이 있습니까?

+0

사용자 구성에 포함될 수있는 내용이나 데이터 파일이 다양하지 않은 경우. 그런데 처음 실행시에 실행 파일이 이러한 파일을 생성하도록 만드는 이유는 무엇입니까? 아마도 데이터베이스에 사용자 데이터를 유지 관리하는 앱은 사용자 특성을 검색하여 파일을 생성 할 수 있습니다. 이것은 유연하고 쉽습니다. –

+0

앱은 completly 오프라인이어야하며 사용자 데이터는 서버 측에서만 알 수 있어야합니다. 서버는 응용 프로그램에서 사용하는 모든 데이터를 유틸리티에 제공해야합니다. 그런 다음 앱은이 데이터 및 사용자 데스크톱을 사용하여 결과를 제공해야합니다. 그런 다음 사용자가 수동으로 사이트에 다시 업로드합니다. 거기에 몇 가지 다른 제약 조건이 있지만, 이러한 응용 프로그램을 만드는 것은 주요 문제를 해결할 수있는 유일한 방법입니다. – Yavanosta

답변

0

저는 자격 증명을 묻지 않고 어떤 사용자인지 식별해야하는 응용 프로그램에서이를 수행해 왔습니다. 기본적으로 어떤 종류의 토큰은 다운로드 전에 응용 프로그램 내에 번들되어 서버로 전송됩니다.

  • WiX 사용 :

    내가 발견 한 것을에서

    ,이 개 방법이 단지를 보내기 전에 클라이언트 단일 MSI와 editing its database 만들기

  • 에 보내, 촛불 + 빛 전화, XML을 구축 to client

우리는 구현의 단순성 때문에 MSI 데이터베이스 편집을 선택했지만, 최근 생산 과정에서 WiX를 보았습니다. 결과는 꽤 깔끔합니다.

0

Mono Cecil을 사용하면 리소스를 포함하여 어셈블리를 프로그래밍 방식으로 변경할 수 있습니다. 귀하의 경우에는이 도구를 사용하여 특정 사용자에 대한 데이터가 포함 된 임베디드 리소스를 추가/수정하기 위해 사전 다운로드 어셈블리를 수정할 수 있습니다.

byte[] userData = ...; 
EmbeddedResource resource = new EmbeddedResource("UserData", ManifestResourceAttributes.Public, userData); 
assembly.MainModule.Resources.Add(resource); 

그런 다음 Assembly.GetManifestResourceNamesAssembly.GetManifestResourceStream를 사용하여 (실행, 후 다운로드에서) 추가/수정 된 자원 (들)을 읽을 수 있습니다.

관련 문제