Tengo una aplicación WPF que se instala en la máquina cliente a través del Windows Installer. Esta aplicación también registra una extensión de archivo (.xyz), por lo que cuando el usuario hace doble clic en un archivo, abre mi aplicación WPF y muestra el archivo (como Microsoft Word). Este programa también tiene una tonelada de archivos que no están marcados como recursos o archivos de contenido que utiliza (manuales de usuario, dibujos de partes, etc.).WPF Working Directory
El problema surge cuando el usuario hace doble clic en un archivo .xyz y abre la aplicación WPF. La aplicación ahora tiene un directorio de trabajo del directorio donde se encuentra el archivo .xyz. Ahora el programa no puede encontrar ninguno de los archivos (manuales de usuario, dibujos de partes, etc.) que necesita.
¿Cuál es la mejor manera de manejar este tipo de problema? Podría establecer el directorio de trabajo (Environment.CurrentDirectory), pero el cuadro de diálogo Abrir archivo cambia el directorio de trabajo cuando el usuario guarda o abre un archivo .xyz. Podría usar un paquete uri para los dibujos de piezas, pero utilizo Process.Start para los manuales del usuario porque son PDF. Intenté buscar, pero no pude encontrar nada.
Application.ExecutablePath no existe en WPF, por lo que utiliza la reflexión. Esto funciona para los archivos PDF y para los archivos de imagen. Estoy usando un URI de paquete. Simplemente parece que habría una forma mejor de manejar este escenario. – awilinsk
Agregó un método alternativo ... – brendan
Como [este enlace] (http://stackoverflow.com/a/948438/419348) dijo, 'System.Reflection.Assembly.GetExecutingAssembly(). Location' podría obtener la ubicación después 'shadow-copiando'. – AechoLiu