Obtener el path absoluto, no el relativo

01/08/2005 - 23:51 por Luis Arvayo | Informe spam
Hola,

Quizás es una pregunta tonta, pero preguntando se llega a Roma. No hay de
otra.

Cuando instalo mi aplicación, los datos los coloco dos subdirectorios arriba
en subdirectorio "Data", de tal manera que creo una variable en mi app que
apunta a dicho subdirectorio y que la inicializo de la siguiente manera:

MyAppData = "..\..\Data\";

Pero lo que quiero es que contenga algo como lo siguiente:

MyAppData = "c:\Apps\MyMainApp\Data\";

Se supone que la aplicacion (archivo .exe) esta en un subdirectorio tal como
: "c:\Apps\MyMainApp\App\Bin\"

Como lo puedo lograr ?

Gracias anticipadas
Luis A.

Preguntas similare

Leer las respuestas

#1 Octavio Hernandez
02/08/2005 - 01:08 | Informe spam
Luis,

¿Te refieres a cómo obtener el directorio desde dentro del programa de
instalación de tu aplicación? Para eso se utiliza la variable [TARGETDIR] de
las acciones personalizadas. Mira este documento:

http://msdn.microsoft.com/library/d...operty.asp

Si es en tiempo de ejecución, el objeto Application tiene una propiedad
ExecutablePath que indica la ruta completa del EXE:

http://msdn.microsoft.com/library/d...hTopic.asp

Salu2 - Octavio

"Luis Arvayo" escribió en el mensaje
news:
Hola,

Quizás es una pregunta tonta, pero preguntando se llega a Roma. No hay de
otra.

Cuando instalo mi aplicación, los datos los coloco dos subdirectorios
arriba en subdirectorio "Data", de tal manera que creo una variable en mi
app que apunta a dicho subdirectorio y que la inicializo de la siguiente
manera:

MyAppData = "..\..\Data\";

Pero lo que quiero es que contenga algo como lo siguiente:

MyAppData = "c:\Apps\MyMainApp\Data\";

Se supone que la aplicacion (archivo .exe) esta en un subdirectorio tal
como : "c:\Apps\MyMainApp\App\Bin\"

Como lo puedo lograr ?

Gracias anticipadas
Luis A.





Respuesta Responder a este mensaje
#2 Miguel Ortiz Falcón
02/08/2005 - 01:25 | Informe spam
No me queda muy claro qué es lo que necesitas
exactamente, porque pues si ya sabes la ruta especifica
que necesitas, pues se la estableces y listo.
De lo contrario a mi me parece una buena solución el uso
de "..\..\Data\" en la cadena del PATH, pues evitas el
usar más recursos a la aplicación al tener más llamadas a
métodos, etc, etc.

Porque otra manera de obtener lo que quieres es por
ejemplo. Ya sea mediante:

Application.StartupPath o Directory.GetCurrentDirectory()

obtener un string con la ruta total que en tu caso seria:
"c:\Apps\MyMainApp\App\Bin\"

y ya que tienes la ruta en un string, puedes usar el
método:

Directory.GetParent(string), dos veces.

Pero vuelvo a insistir, para nada te recomiendo que lo
hagas asi. No le veo el defecto del uso de "..\..\".

Saludos

Miguel Ortiz Falcón

Respuesta Responder a este mensaje
#3 Luis Arvayo
02/08/2005 - 03:19 | Informe spam
Gracias por la respuesta.

No me queda muy claro qué es lo que necesitas
exactamente, porque pues si ya sabes la ruta especifica
que necesitas, pues se la estableces y listo.




Lo que pasa es que la ruta especifica no la sé de antemano, ya que la
aplicacion se puede instalar en cualquier subdirectorio.


De lo contrario a mi me parece una buena solución el uso
de "..\..\Data\" en la cadena del PATH, pues evitas el
usar más recursos a la aplicación al tener más llamadas a
métodos, etc, etc.




De hecho es una buena solución, pero no sé porque pero si uso el path de esa
manera cuando trato de localizar algo en ese subdirectorio no me funciona,
pero estuve haciendo pruebas dandole directamente el directorio empezando
desde la raiz y funcionó perfectamente, y es la razón por la que queria el
path completo desde la raiz.
De hecho, es un archivo de Flash (.swf) que se lo proporciono a la propiedad
axShockwaveFlash.Movie del ocx de Macromedia, pero tal parece que no trabaja
con el subdirectorio proporcionado de esa manera, y con el path completo sí
funciona, pero no sé la razón.
De todas maneras voy a probar con tus sugerencias de Directory.GetParent.
Mil gracias.





"Miguel Ortiz Falcón" escribió en el mensaje
news:097001c596f0$3fbf0d50$
No me queda muy claro qué es lo que necesitas
exactamente, porque pues si ya sabes la ruta especifica
que necesitas, pues se la estableces y listo.
De lo contrario a mi me parece una buena solución el uso
de "..\..\Data\" en la cadena del PATH, pues evitas el
usar más recursos a la aplicación al tener más llamadas a
métodos, etc, etc.

Porque otra manera de obtener lo que quieres es por
ejemplo. Ya sea mediante:

Application.StartupPath o Directory.GetCurrentDirectory()

obtener un string con la ruta total que en tu caso seria:
"c:\Apps\MyMainApp\App\Bin\"

y ya que tienes la ruta en un string, puedes usar el
método:

Directory.GetParent(string), dos veces.

Pero vuelvo a insistir, para nada te recomiendo que lo
hagas asi. No le veo el defecto del uso de "..\..\".

Saludos

Miguel Ortiz Falcón

Respuesta Responder a este mensaje
#4 Miguel Angel Campos
02/08/2005 - 09:03 | Informe spam
Puedes utilizar el método MapPath del objeto HttpServerUtility.
MyAppData = Page.Server.MapPath("/../../Data")

Un Saludo,

Miguel Angel Campos
MCAD.NET

"Luis Arvayo" escribió en el mensaje
news:
Hola,

Quizás es una pregunta tonta, pero preguntando se llega a Roma. No hay de
otra.

Cuando instalo mi aplicación, los datos los coloco dos subdirectorios
arriba en subdirectorio "Data", de tal manera que creo una variable en mi
app que apunta a dicho subdirectorio y que la inicializo de la siguiente
manera:

MyAppData = "..\..\Data\";

Pero lo que quiero es que contenga algo como lo siguiente:

MyAppData = "c:\Apps\MyMainApp\Data\";

Se supone que la aplicacion (archivo .exe) esta en un subdirectorio tal
como : "c:\Apps\MyMainApp\App\Bin\"

Como lo puedo lograr ?

Gracias anticipadas
Luis A.





Respuesta Responder a este mensaje
#5 Tristan
02/08/2005 - 14:49 | Informe spam
Para obtener una ruta absoluta, a partir de una relativa, puedes usar el
método GetFullPath de la clase Path:

MyAppData = Path.GetFullPath("..\..\Data\");

Juan Carlos Badiola Saiz
MVP - C#
email Siga el debate Respuesta Responder a este mensaje
Ads by Google
Help Hacer una preguntaRespuesta Tengo una respuesta
Search Busqueda sugerida