2009-04-22 3 views
7

USB 플래시 저장 장치를 소유하고있는 가장 좋은 방법 중 하나는 나와 유용한 도구 모음을 사용하는 것입니다. 몇 가지 도구를 작성하고 이러한 종류의 환경에서 제대로 작동하도록하고 싶습니다. 나는 C#을 가장 잘 알고 있고, 생산성이 높기 때문에 Windows 양식 응용 프로그램을 그렇게 빨리 얻을 수 있습니다.C 드라이브의 USB 드라이브 휴대용 응용 프로그램 작성

하지만 휴대용 앱을 만들 때 고려해야 할 사항은 무엇입니까? 몇 가지 생각할 수 있지만 답변을 알 수는 없습니다.

1) 언어 이식성 - 사용하는 모든 컴퓨터에 .NET 런타임이 설치되어 있어야합니다. 그러나 몇 가지 Windows 시스템 만 정기적으로 사용하므로 문제가되지 않습니다. 코드를 작성하는 데 다른 언어를 사용할 수도 있지만, 특히 쉬운 양식 디자이너와 관련하여 생산성이 떨어집니다. 플래시 드라이브에서. NET 응용 프로그램을 실행하는 데 다른 문제가 있습니까?

2) 읽기/쓰기주기 - C#에서 내 응용 프로그램이 불필요하게 드라이브에 쓰지 않는 것을 어떻게 확인합니까? 나는 항상 글쓰기를 통제 할 수 있습니까? 아니면 내가 알아야 할 "숨겨진 글쓰기"가 있습니까?

3) 공개 질문 : 알고 있어야하는 휴대용 응용 프로그램과 관련된 다른 문제가 있습니까? 아니면 유사한 수준의 생산성을 제공하지만 더 나은 이식성을 얻을 수있는 좋은 IDE를 가진 다른 언어에 대한 제안입니까?

답변

10
  • 1) 문제 플래시 드라이브에서 .NET 응용 프로그램을 실행이 안됩니다.
  • 2) 가장 많이 쓰는 것은 입니다. 임시 주소 또는 플래시 드라이브가 아닌 하드 드라이브의 다른 위치에 쓰기를하십시오.그러나 쓰기 사이클은 이 아니어야합니다. 심지어 중용 ~ 무거 우면 용법 대부분의 플래시 드라이브는 수명이 입니다.
  • 3) 그냥 의 그것을 XCOPY 스타일의 배포를 가지고 있으며, 일부 종속성이 상자에없는 경우 정상적으로 실패 앱 계정하려고 모든 응용 프로그램처럼 취급합니다.
0

나는 실제로 이것에 대한 경험이 없기 때문에 내가 말한 것을 소금으로 채취하는 것이 가장 좋습니다. 하지만 여기에 그것을 가지고 있습니다 :

특별한 일을 할 필요가 없습니다.

드라이브에 기록하는 방법과시기에 대해 응용 프로그램 개발자가 실제로 고려하지 않은 것은 OS에 의해 훨씬 잘 제어되는 것입니다. Windows 캐시가 USB 드라이브에 쓰기 때문에 캐시를 처리한다고 믿습니다.

유일한 고려 사항은 응용 프로그램이 설치되지 않는다는 것입니다. 따라서 배포 할 디렉토리 내에 완전히 포함되도록 설계해야합니다. 선택적으로 사용자 홈 디렉토리에 대한 쓰기도 가능하지만 적절한 환경 변수를 통해 수행해야합니다.

운영체제가 처리하지 않는 플래시 드라이브에 대해 특별한 것이 있는지 필자에게보고하고 확인할 수 있습니다.

+0

드라이브가 빠른 제거를 위해 최적화되어 있고 대부분의 플래시 드라이브가있는 경우 Windows는 캐시가 아니라 연속 기입을 수행합니다. – Michael

+0

빠른 제거를 위해 드라이브가 최적화되어 있다면 사용자의 희망을 존중하고 즉시 쓸 수없는 어떤 이유가 있습니까? 드라이브에 쓰기가 캐시되어야한다는 요구 사항이있는 경우 다시 구현하지 말고 OS 지원을 설정하십시오. –

+0

@JayArr - Windows 캐시가 USB 플래시 드라이브에 기록한다는 내용에 대해 의견을 말했습니다. 일반적으로 이는 사실이 아닙니다. – Michael

0

# 1 또는 # 3에 대한 답변이 없습니다. 그러나 # 2의 경우 .NET CLR은 코드가 파일 기반 설정 (ini, xml 등)을 명시 적으로 지시하거나 사용하고 수정하지 않는 한 응용 프로그램의 "설치"폴더 (즉, 플래시 드라이브)에 쓰지 말아야합니다. 앱과 함께 살고 있습니다.

개인 사용을 위해 물건을 쓰는 것이 아니라면 1 번 키커는 정말 키커입니다. 분명히 엄지 드라이브에서 전체 CLR의 휴대용 복사본을 호스팅하는 것은 불가능합니다. 그러나 어셈블리를 종속성에 대해 검사하고 독립 실행 형 .exe로 패키지화하여 CLR이 대상 시스템에 반드시 설치되어 있지 않아도되는 도구가 있습니다.

2

com 개체를 사용하려면 reg-free com을 사용하고 프로그램에 com 개체를 포함시킵니다.

2

항상 글을 관리해야합니다. 응용 프로그램은 시작할 때 RAM에로드해야하며 그 이후의 메모리는 RAM에 할당되므로 플래시 드라이브에 아무 것도 기록되지 않습니다.

휴대용 응용 프로그램에서 가장 중요한 것은 기본적으로 응용 프로그램을 설치할 필요가 없다는 것입니다. 응용 프로그램이 다른 컴퓨터에 '설치'되지 않으므로 특히 레지스트리 값에 의존하기를 원하지 않습니다.

휴대용 응용 프로그램의 문제점 중 하나는 데이터 지속성입니다. 일반적으로 사용자의 Application Data 폴더에 데이터를 저장합니다. 이 경우 저장된 모든 데이터는 해당 컴퓨터의 사용자에게만 적용됩니다. 로컬 응용 프로그램 데이터를 원할 경우 설정을위한 Seralized XML 파일을 만들어 응용 프로그램의 디렉터리에 로컬로 저장할 수 있습니다. 이 파일 쓰기는 걱정할 필요가있는 유일한 쓰기 작업 일 가능성이 높습니다.

.NET 이식성 문제로 인해 컴퓨터에 .NET이 설치되어 있는지 확인하는 C++에서 작은 항목 프로그램을 작성할 수도 있습니다. .NET에는 설치된 버전을 확인할 수있는 레지스트리 값이 있으므로 .NET이 설치되어 있으면 응용 프로그램을 실행하고 그렇지 않으면 .NET을 먼저 설치해야한다는 메시지가 표시됩니다.

편집 : 저는 C# 3.0에서 XAML을 사용하는 초음파 시스템의 응용 프로그램 개발을 추가하고 싶습니다. 내가 작성한 응용 프로그램은 USB 플래시 드라이브에서 완벽하게 작동하지만 모든 사용자 설정은 로컬 AppData 기반에 저장되므로 USB에 아무 것도 기록되지 않습니다. .exe 설치 프로그램을 통해 응용 프로그램을 설치할 수 있지만 설치 관리자는 응용 프로그램이 의존하는 레지스트리 값을 쓰지 않습니다.

관련 문제