2012-08-13 4 views
5

Visual Studio 2012 RC에서 응용 프로그램을 컴파일하면 예상대로 프로젝트 소스 폴더에 bin\ 폴더가 생성되어 foo.exe가 생성 된 것을 볼 수 있습니다. 앱. 나는 응용 프로그램을 디버깅을 시작하면, 해당 아이콘이 시작 화면에 넣어 나는Windows 8 응용 프로그램의 배포

C에서 만든 새 폴더를 찾을 수 있습니다 : \ 사용자 \ 누군가 \의 AppData \ 로컬 \ 패키지 \ xxxxx_xxxxxx

을 그러나 전체 디스크를 검색 한 후에도이 폴더에서 foo.exe를 찾을 수 없습니다. win8 응용 프로그램에는 이전 Windows 프로그램과는 다른 설치/배포 메커니즘이있는 것 같습니다. 내 질문은 다음과 같습니다.

(1) how/where win8 앱이 어떻게 설치/설치 되었습니까?

(2) 로컬 데이터 폴더 (코드에서 ApplicationData.Current.LocalFolder과 동일)를 사용하고 싶지만 경고없이 시작 화면 아이콘을 마우스 오른쪽 버튼으로 클릭하고 "제거"를 클릭하면 전체 폴더가 삭제됩니다. 로컬 데이터를 저장하는 더 좋은 곳이 있습니까? 아니면 SQLite가 필요합니까? 예를 들어, 내 응용 프로그램은 error.txt에 모든 충돌 메시지를 씁니다.이 경우 sqlite를 사용할 수 없으며 error.txt을 로컬 상태 폴더에 넣으면 사용자가 이미 응용 프로그램을 제거한 것일 수 있습니다. 또 다른 시나리오는 사용자가 앱을 제거하지만 로컬 데이터 (파일)를 유지하려는 경우입니다. 물론 ApplicationData.Current.LocalFolder는 좋은 선택이 아닙니다.

답변

4

1) :

이 사용 SQLLite-NET의 예

이 페이지의 하단에서 확인하실 수 있습니다 \ 프로그램 파일 \는 \ windowsapps하지만, 기본적 당신 돈으로 해당 폴더의 소유권이 없으므로 액세스 할 수 없습니다. 그래도 상관 없어요. 디자인에 따라이 폴더에 액세스 할 수 없습니다.

2) 다시 말하지만, 제거시 앱의 로컬 데이터 폴더를 삭제하면 예상되는 동작입니다. 그렇지 않으면 상점을 통해 앱을 배포하고 오용을 시작하여 사용 가능한 모든 저장 공간을 차지한 경우 사용자가 해당 데이터를 삭제할 수있는 간단한 방법이 없습니다. 그러나 경고가 없다는 당신의 주장은 사실이 아닙니다. 제거 팝업에 분명히 "이 앱 및 관련 정보가이 PC에서 제거됩니다"라고 표시됩니다.

경우에 따라 로밍 폴더에 데이터를 저장할 수도 있지만이 폴더는 대용량 데이터가 아닙니다. 거기에는 응용 프로그램 설정/구성 옵션을 보유하여 장치간에 로밍 할 수 있습니다. 아마도 dev에 크래시 로그인을 넣을 수는 있지만 (충분히 작 으면), 앱이 제거되기 전에 클라우드에 동기화 될 것이라는 보장은 없습니다. 최선의 방법은 Live SDK를 사용하여 클라우드에 데이터를 동기화하는 것이지만, 클라우드에 즉시 데이터가 기록된다는 보장이 없습니다.

1

Windows 8 Metro 응용 프로그램의 파일 시스템에 데이터를 유지하려면 격리 된 저장소를 사용해야합니다. 다음을 사용하여 위치를 찾을 수 있습니다.

Windows.Storage.ApplicationData.Current.LocalFolder.Path;

각 플랫폼의 아키텍처가 변경됨에 따라 데이터를 저장할 위치를 확실히 알 수 없지만이 상수는 모든 응용 프로그램에서 작동한다는 것을 보장합니다. 이 폴더는 응용 프로그램이 설치되고 업그레이드되는 동안 "보안"상태로 유지되므로 데이터를 사용하지 않아야합니다. 윈도우 8 패키지가 C에 배포 http://timheuer.com/blog/archive/2012/05/20/using-sqlite-in-metro-style-app.aspx

+0

하지만 내 질문은 :'Windows.Storage.ApplicationData.Current.LocalFolder'는 사용자가 앱 아이콘을 마우스 오른쪽 버튼으로 클릭하고 제거를 선택하면 경고없이 삭제됩니다. 내 앱에는 적합하지 않습니다. 나는 더 안전한 장소를 원해. –

+1

메트로 앱은이 시나리오를 지원하지 않습니다. 격리 된 저장소는 파일 탐색기를 구현하지 않고 파일 시스템에 액세스하는 유일한 쓰기 액세스입니다. 설치 후에도이 데이터를 저장하려면이를 다시 "클라우드 서비스"와 동기화하여 다시 설치할 때 응용 프로그램을 업데이트하는 것을 고려해야합니다. – LewisBenge

관련 문제