Preservación de Archivos y Configuraciones
Los archivos binarios de tu aplicación se reemplazan completamente durante las actualizaciones, por lo que no debes almacenar archivos importantes en el mismo directorio que los archivos binarios de tu aplicación.
Configuración de la Aplicación
Si deseas crear configuraciones que persistan a través de las actualizaciones, pero se borren cuando la aplicación se desinstale, en Windows debes almacenarlas un nivel más arriba (..\) fuera del directorio current.
Si deseas crear archivos que persistan incluso si la aplicación se desinstala (por ejemplo, configuraciones importantes del usuario), deberías almacenarlos en %AppData%\{packId} (eso es el roaming app data, no los datos de aplicación locales donde vive la aplicación).
Sentry / Crashpad / Reporte de Errores
Muchas utilidades de manejo de errores y bloqueos almacenarán informes de errores/bloqueos en el directorio de la aplicación de forma predeterminada, y los subirán como un informe la próxima vez que la aplicación se inicie.
Debes asegurarte de que cualquiera de estas bibliotecas pueda configurarse con un directorio de base de datos / almacenamiento fuera del directorio de la aplicación actual.
En Windows, solo necesitas estar fuera del directorio %LocalAppData%\{packId}\current. Por lo tanto, podrías usar ..\ (que es lo mismo que %LocalAppData%\{packId}).
Sistemas no Windows
Para otros sistemas operativos que no sean Windows, deberías buscar en línea las mejores prácticas sobre dónde almacenar archivos de configuración/registro para aplicaciones instaladas.
La ubicación recomendada es específica del sistema operativo / distribución, y podría estar en /var o en algún lugar del directorio de inicio del usuario ~ (por ejemplo, ~/Library/Application Support en MacOS).
Encontrar rutas de la aplicación en tiempo de ejecución
En lugar de codificar rutas de forma fija, puedes preguntarle a Velopack dónde viven las cosas. Después de que VelopackApp.Build().Run() se haya ejecutado, VelopackLocator.Current (un IVelopackLocator) expone:
RootAppDir— el directorio raíz de la aplicación (en Windows, la carpeta{packId}).AppContentDir— donde viven los archivos de la aplicación versionados (la carpetacurrenten Windows).PackagesDir— donde se guardan los paquetes.nupkgdescargados.AppTempDir— el directorio temporal/de trabajo para esta aplicación.CurrentlyInstalledVersion,Channel, eIsPortable— metadatos sobre la instalación.
Usar estos significa que tu lógica de "almacenar configuraciones un nivel más arriba de la aplicación" seguirá funcionando incluso si el diseño de instalación difiere entre plataformas. Todo lo que almacenes fuera de la instalación/RootAppDir sobrevivirá a una desinstalación — consulta Desinstalar para saber exactamente qué se elimina.