¿Dónde puedo almacenar de forma segura los archivos de datos para una implementación de ClickOnce?

He estado usandoApplicationDeployment.CurrentDeployment.DataDirectory para almacenar contenido descargado por el cliente en tiempo de ejecución que se espera que esté allí cada vez que se inicie la aplicación, sin embargo, ahora he encontrado que estos cambios aparentemente al azar si la aplicación se actualiza.

Cuál es el mejor método confiable para almacenar datos de usuario para la aplicación en implementaciones de clic único?

Actualmente he estado usando el siguiente método

private const string LocalPath = "data";

public string GetStoragePath() {
    string dir;
    if (ApplicationDeployment.IsNetworkDeployed) {
        ApplicationDeployment ad = ApplicationDeployment.CurrentDeployment;
        dir = Path.Combine(ad.DataDirectory, LocalPath);
    } else {
        dir = LocalPath;
    }
    return CreateDirectory(dir);
}

Originalmente seguí el artículo Acceso a datos locales y remotos en aplicaciones ClickOnce bajo el encabezadoClickOnce Data Directory que indica que esta es la ruta recomendada.

NOT: CreateDirectory(string) simplemente crea un directorio si aún no existe.

He encontrado que la causa raíz de mi problema es que estoy creando muchos archivos y un archivo de índice, este archivo de índice contiene rutas absolutas, al hacer clic una vez se mueve el contenido (o copias) en una actualización, por lo que las rutas absolutas ya no existen . Investigaré el almacenamiento aislado como Damokles sugiere para ver si esto tiene el mismo efecto secundario para las implementaciones de hacer clic una vez.

Respuestas a la pregunta(3)

Su respuesta a la pregunta