문제

이 Winform 응용 프로그램 출시된 ClickOnce 에서 우리의 인트라넷에 있습니다.우리가 저 개인적인 환경에 대한 GUI 에서 고립된 저장합니다.모든 작업은 매우 정밀한:)

문제입니다면 우리는 새로운 버전의 응용 프로그램,우리는 게시...모든 환경 설정이 손실됩니다!사용자를 설정해야 자신의 취향과 각 버전입니다.

하는 방법이 있 냉동 격리에 대한 전체를 대신 응용 프로그램의 버전은?

도움이 되었습니까?

해결책

사용해야합니다 신청 비계가 아니라 범위를 지정합니다 도메인 스코프, 고립 된 스토리지. 이것은 중 하나를 사용하여 수행 할 수 있습니다 분리 된 스토리 필 스트림 과부하 된 생성자.

예시:

using System.IO;
using System.IO.IsolatedStorage;
...

IsolatedStorageFile appScope = IsolatedStorageFile.GetUserStoreForApplication();    
using(IsolatedStorageFileStream fs = new IsolatedStorageFileStream("data.dat", FileMode.OpenOrCreate, appScope))
{
...

그러나 이제는 클릭 오케를 통해 응용 프로그램을 시작한 경우에만 작동하는이 코드의 문제가 발생합니다. Clickonce (예 : Visual Studio)를 통해 출시되지 않으면 getUserserToreForApplication () 예외를 던질 것입니다.

주변 길 이것 문제는 확인하는 것입니다 AppDomain.currentDomain.ActivationContext 애플리케이션 스코핑 격리 스토리지를 사용하려고하기 전에는 널이 아닙니다.

다른 팁

얼마 전에 ClickOnce 앱에서 작업하고 있었고 Environment.GetFolderPath (ApplicationData) - 예를 들어 모든 설정을 저장하기 위해 Roaming App Data Folder를 사용했습니다. 잘 작동하고 수많은 업데이트에서 살아 남았습니다. 앱 또는 CompanyName/AppName의 이름을 가진 하위 디렉토리를 만들거나 그 밖의 모든 것을 저장하십시오.

요약에서 다른 답변:

IsolatedStorageFile isolatedStorage = IsolatedStorageFile.GetUserStoreForAssembly();//for visual studio
if (System.Deployment.Application.ApplicationDeployment.IsNetwor‌​kDeployed)
{
    isolatedStorage = IsolatedStorageFile.GetUserStoreForApplication();//for click once applications
}

데이터베이스와 같은 더 내구성있는 스토어에 영구 버전의 사용자 설정을 저장해야합니다. 응용 프로그램은 사용 가능한 경우 격리 된 스토리지를 사용하기로 결정할 수 있습니다. 사용할 수없는 경우 (최신 버전으로 인해) 앱은 데이터베이스에서 설정을 가져 와서 분리 된 스토리지에서 설정을 다시 시작하는 데 사용해야합니다. 설정이 변경되면 두 장소를 모두 업데이트해야합니다. 최신 버전의 앱이 없으면 앱이 DB에서 설정을 얻을 필요가 없습니다.

라이센스 : CC-BY-SA ~와 함께 속성
제휴하지 않습니다 StackOverflow
scroll top