elhacker.net cabecera Bienvenido(a), Visitante. Por favor Ingresar o Registrarse
¿Perdiste tu email de activación?.

 

 


Tema destacado: Estamos en la red social de Mastodon


+  Foro de elhacker.net
|-+  Programación
| |-+  Programación General
| | |-+  .NET (C#, VB.NET, ASP) (Moderador: kub0x)
| | | |-+  Ayuda,Incluir ficheros de texto en instalador visual basic .
0 Usuarios y 1 Visitante están viendo este tema.
Páginas: [1] Ir Abajo Respuesta Imprimir
Autor Tema: Ayuda,Incluir ficheros de texto en instalador visual basic .  (Leído 7,924 veces)
proview

Desconectado Desconectado

Mensajes: 32


Ver Perfil
Ayuda,Incluir ficheros de texto en instalador visual basic .
« en: 1 Marzo 2014, 16:55 pm »

Hola.

Tengo una duda a ver si podéis ayudarme:

He creado el juego pasapalabra en visual basic para un trabajo de clase, mi código se basa en leer un fichero diccionario junto con otro fichero que escribo las 26 definiciones del rosco del pasapalabra.

Entonces, trabajo con dos ficheros, uno de lectura y otro de escritura. En mi ordenador cuando creo el ejecutable el programa me funciona pero en otros ordenadores no funciona. ¿Cómo puedo hacer para que el juego funcione en cualquier ordenador?

He probado a añadir los ficheros en la carpeta resources del programa, añadiendo la ruta hacía los datos de dicha carpeta pero así también funciona solo en mi ordenador, también he probado poner my.resources.diccionario pero así no me reconoce la ruta.

Para leer ficheros y escribir utilizo este código:

Código
  1. Dim ruta As String = "E:\Ficheros\Diccionario1.txt"
  2. Dim sr As New System.IO.StreamReader(ruta, System.Text.UnicodeEncoding.Default)
  3. Dim texto As String
  4. texto = sr.ReadLine

Y para escritura:

Código
  1. Dim Archivo As System.IO.StreamWriter
  2. Archivo = My.Computer.FileSystem.OpenTextFileWriter(ruta, False) //Aquí la ruta del archivo de escritura que es distinto al de lectura

Es correcta esa forma? o para crear el instalador debo hacer algo más?

Un saludo.


« Última modificación: 1 Marzo 2014, 19:47 pm por Eleкtro » En línea

Eleкtro
Ex-Staff
*
Desconectado Desconectado

Mensajes: 9.885



Ver Perfil
Re: Ayuda,Incluir ficheros de texto en instalador visual basic .
« Respuesta #1 en: 1 Marzo 2014, 20:40 pm »

Hola

Citar
Código
  1. Dim ruta As String = "E:\Ficheros\Diccionario1.txt"
Resulta obvio que, si el archivo no se encuentra en esa ruta absoluta (en todos y cada uno de los PC's que usen tu applicación), te va a dar error, ya que la ruta no existe...

Para solucionar el problema debes usar una ruta existente, puedes asignar la ruta hacia el directorio de inicio de la aplicación (es decir, la ruta apuntaría hacia la carpeta donde está tu exe compilado), y distribuir tu aplicación con el archivo de lectura 'Diccionario1.txt' añadido en esa misma carpeta, junto a tu exe, en el directorio de trabajo de la app.

Código
  1. Dim ruta As String = ".\Diccionario1.txt"

Te vendría bien leer lo siguiente:
· Application.StartupPath Property
· ¿como accedo al directorio raiz?


Aparte de eso, hay una cosa que no me cuadra en tu duda, que tengas el archivo de texto como recurso pero que quieras utilizarlo especificando una ruta?, quizás me he perdido algo o entendí mal esa parte, pero si tienes el archivo ya añadido como recurso entonces resulta innecesario el uso de una ruta, de hecho no puedes, los recursos se utilizan como una Class con propiedades (Ej: Dim ContenidoDelArchivo as string = my.resources.diccionario.ToString), no como un archivo indicando una ruta.

· My.Resources Object


Saludos!


« Última modificación: 1 Marzo 2014, 21:01 pm por Eleкtro » En línea



proview

Desconectado Desconectado

Mensajes: 32


Ver Perfil
Re: Ayuda,Incluir ficheros de texto en instalador visual basic .
« Respuesta #2 en: 2 Marzo 2014, 13:49 pm »

Hola.

Muchas gracias por responderme y pasarme esos link,ya los leí pero no termino de aclararme con ellos.
Sobre la parte que no me entendiste quizás me explique mal.
A ver, cuando hice el código del programa la forma de leer los ficheros las tenía como rutas indicadas desde la carpeta de mi ordenador, pero cuando genere el instalador me dí cuenta que no funcionaba en otros ordenadores así que me puse a investigar y vi lo de introducir los ficheros en la carpeta resources y usar lo de my.resources."fichero".

Cuando uso solamente el my resocurce como me has dicho el programa no me funciona cuando lo ejecuto (creo porque no me lee el fichero de esa forma). También he puesto los ficheros en la carpeta de inicio de la aplicación indicando la ruta que me dijiste y al ejecutarlo en otro ordenador da error en la ruta.

Alguna otra idea? Seguramente hay algo que no hago bien o no hago pero no entiendo que puede ser.

Un saludo.
 
En línea

Eleкtro
Ex-Staff
*
Desconectado Desconectado

Mensajes: 9.885



Ver Perfil
Re: Ayuda,Incluir ficheros de texto en instalador visual basic .
« Respuesta #3 en: 2 Marzo 2014, 14:58 pm »

he puesto los ficheros en la carpeta de inicio de la aplicación indicando la ruta que me dijiste y al ejecutarlo en otro ordenador da error en la ruta.

Eso es técnicamente imposible, el primer lugar donde el SO intenta localizar una ruta relativa es en el directorio de trabajo actual, así que si tu tienes tu archivo junto al exe, y has modificado la ruta corréctamente (y suponiendo que no cambies el directorio de trabajo de la APP) debe funcionar.

Código
  1. Dim TextFile As String = ".\Archivo.txt"
  2. Dim TextContent As String = IO.File.ReadAllText(TextFile)
  3. Dim TextReader As New IO.StringReader(TextContent)
  4.  
  5. MessageBox.Show(TextReader.ReadLine)


Cuando uso solamente el my resocurce como me has dicho el programa no me funciona cuando lo ejecuto (creo porque no me lee el fichero de esa forma)

¿Pero has añadido el recurso desde las propiedades de tu proyecto?.

· Cómo: Agregar o quitar recursos

Si símplemente copiar un archivo a la carpeta 'Resources' no consigues nada.

Y porfavor, cuando digas que "no me funciona" o "me da error", da los detalles completos del error que te muestra la IDE, no somos adivinos para saber lo que te está diciendo.


Saludos
« Última modificación: 2 Marzo 2014, 15:03 pm por Eleкtro » En línea



proview

Desconectado Desconectado

Mensajes: 32


Ver Perfil
Re: Ayuda,Incluir ficheros de texto en instalador visual basic .
« Respuesta #4 en: 2 Marzo 2014, 16:41 pm »

Gracias.

Si, incluí los archivos desde las propiedades del proyecto.

A ver he hecho paso a paso el código que me has pasado y he compilado y guardado el ejecutable del programa. Lo he probado en una maquina virtual con Xp (aquí es donde estado probando y también en el ordenador de un compañero) y al instalarlo me ha dado un error que ponía que el archivo diccionario.txt no se encontraba en en una carpeta en la configuración local de xp,el error es este:

Código:
http://i58.tinypic.com/f0p24p.jpg
El texto cortado indica:

Citar
Código:
System.IO.FileNotFoundException: No se pudo encontrar el archivo 'C:\Documents and Settings\PRIMERO\Configuración local\Apps\2.0\X16CBQ9K.6OB\GRDP0DY2.Z7J\wind..tion_a7cd575c2b32d8ae_0001.0000_4d3315ddf5745775\Diccionario1.txt'.

He ido a la carpeta que indica y he copiado manualmente los archivos que uso y así si ha empezado a funcionar el juego.


No entiendo porque no se han copiado en ese directorio porque en teoría si no me equivocado en algo esta todo bien.
He guardado los  archivos desde propiedades en el recurso, también los tengo en la carpeta debug, en la carpeta final junto al exe también están,ya por último en plan desesperado los he copiado en todas las subcarpetas del programa para ver si tiraba,pero tampoco.


Una cosa que no entiendo, los ficheros están en la carpeta de recursos, si pincho en ellos sale unas propiedades:
Código:
http://i62.tinypic.com/314uik6.jpg
http://i62.tinypic.com/wb3qfc.jpg

De esas opciones he probado a poner compilacion y contenido y también dejarlo en ninguna.Las opciones hay que poner algunas o dejarlas como están?


Pd: En el error de la captura si le doy a continuar la aplicación se abre pero no ejecuta los métodos donde se lee el fichero y me va mostrando cada letra. Cuando copie manualmente los archivos en el directorio que indicaba al abrir la aplicación ya mostraba las cosas del fichero.

Un saludo.
« Última modificación: 2 Marzo 2014, 18:00 pm por proview » En línea

Eleкtro
Ex-Staff
*
Desconectado Desconectado

Mensajes: 9.885



Ver Perfil
Re: Ayuda,Incluir ficheros de texto en instalador visual basic .
« Respuesta #5 en: 2 Marzo 2014, 17:59 pm »

Creo que tienes un tremendo lio montado

¿Porque tu programa intenta buscar el archivo en 'LOCALAPPDATA'?:

Citar
Código:
C:\Documents and Settings\PRIMERO\Configuración local\Apps\2.0\X16CBQ9K.6OB\GRDP0DY2.Z7J\wind..tion_a7cd575c2b32d8ae_0001.0000_4d3315ddf5745775\Diccionario1.txt'

Si quieres pásame una url de descarga del proyecto (por aqui o en privado) y le echo un vistazo al problema del archivo, aunque no te aseguro nada, nunca he echo un instalador en VS, no se si estás usando VSIX para hacer el instalador, o un install builder aparte, o que se yo, así que no se lo que me voy a encontrar xD.

EDITO: Lo de las 'Build actions' es para establecer la forma en como se debe trabajar el recurso (por ejemplo, embedirlo a la app), en tu caso deberías dejarlo como está, en 'None'.

· Resource Files

+

   None: The file is not included in the project output group and is not compiled in the build process. An example is a text file that contains documentation, such as a Readme file.

    Compile: The file is compiled into the build output. This setting is used for code files.

    Content: Allows you to retrieve a file (in same dir as assembly) as a stream via Application.GetContentStream( uri ). For this method to work, it needs a AssemblyAssociatedContentFile custom attribute which VS graciously adds when you mark a file as "Content"

    Embedded resource: embeds the file in an exclusive assembly manifest resource.

    Resource (wpf only): embeds the file in a shared (by all files in the assembly with similar setting) assembly manifest resource named AppName.g.resources.

    Page (wpf only): Used to compile a xaml file into baml. The baml is then embedded with the same technique as Resource (i.e. available as `AppName.g.resources)

    ApplicationDefinition (wpf only): Mark the XAML/class file that defines your application. You specify the code-behind with the x:Class="Namespace.ClassName" and set the startup form/page with StartupUri="Window1.xaml"

    SplashScreen (wpf only): An image that is marked as SplashScreen is shown automatically when an WPF application loads, and then fades

    DesignData: unknown

    DesignDataWithDesignTimeCreatableTypes: unknown

    EntityDeploy: (Entity Framework): used to deploy the Entity Framework artifacts

    CodeAnalysisDictionary: A xml file containing custom word dictionary for spelling rules


Saludos!

« Última modificación: 2 Marzo 2014, 18:13 pm por Eleкtro » En línea



proview

Desconectado Desconectado

Mensajes: 32


Ver Perfil
Re: Ayuda,Incluir ficheros de texto en instalador visual basic .
« Respuesta #6 en: 2 Marzo 2014, 18:08 pm »

No tengo ni idea de porque busca el archivo ahí. Oks lo documento un poco y te lo mando por privado.

Muchas gracias.
En línea

Eleкtro
Ex-Staff
*
Desconectado Desconectado

Mensajes: 9.885



Ver Perfil
Re: Ayuda,Incluir ficheros de texto en instalador visual basic .
« Respuesta #7 en: 2 Marzo 2014, 20:44 pm »

Te vas a reir, pero a mi me funciona perféctamente tu programa, el archivo de lectura ...se lee xD, no ha sido necesario efectuarle ninguna modificación para que me funcione.

¿Has probado tu app en una VM?, debería funcionar.

De todas formas tenías el archivo 'Diccionario1.txt' desperdigado en varias carpetas, lo único que he echo ha sido dejarlo únicamente como recurso y modificar las órdenes para leer el recurso en los 2 métodos que intentaban leer un archivo local, en fín lo tienes en la carpeta .\WindowsApplication7\Resources


Es probable que lo que a ti te sucede sea un problema de VisualStudio (algo que no se ha actualizado corréctamente en el proyecto) o de la configuración de la App, si con la simple modificación que hice sigue sin funcionarte entonces prueba a hacer lo siguiente:

1. Eliminar el archivo oculto de opciones ("WindowsApplication7.suo") que está en la carpeta raiz de la solución.  (verás otro archivo SUO, ese lo ha generado mi VS 2012)
2. Limpiar la solución y reconstruirla (En las opciones de VS, el botón 'Clean solution', y 'Rebuild')
3. Eliminar el directorio que comentaste, me da muy mala espina porque estoy casi convencido de que tiene algo que ver con todo esto y quizás es lo que te está causando el problema:
C:\Documents and Settings\PRIMERO\Configuración local\Apps\2.0\X16CBQ9K.6OB\GRDP0DY2.Z7J
(no se que habrá dentro del directorio, quizás prefieras hacer un backup antes de elimiar).


PD: Hay muchas cosas que podrías mejorar en el código (demasiadas), y también me fijé que tenías un bug (al cerrar el Form1.vb la aplicación seguía activa sin cerrarse y había que matarla o detener el debugger), lo he corregido.

Saludos
« Última modificación: 2 Marzo 2014, 22:00 pm por Eleкtro » En línea



Páginas: [1] Ir Arriba Respuesta Imprimir 

Ir a:  

Mensajes similares
Asunto Iniciado por Respuestas Vistas Último mensaje
incluir DLL en Visual Basic .NET
.NET (C#, VB.NET, ASP)
zhynar_X 2 15,645 Último mensaje 22 Febrero 2009, 22:47 pm
por bitarray
formatear texto visual basic « 1 2 »
Programación Visual Basic
^kazike^ 10 10,307 Último mensaje 10 Abril 2008, 03:39 am
por ((( SPAWN )))
Problema al abrir Visual Basic (se abre un instalador)
Programación Visual Basic
rob1104 5 7,524 Último mensaje 3 Octubre 2008, 08:35 am
por WestOn
incluir base de datos en instalador de proyecto en C# (ayuda) « 1 2 »
.NET (C#, VB.NET, ASP)
24K 10 24,072 Último mensaje 16 Septiembre 2015, 04:42 am
por ANDRESY
Crear instalador en visual basic
Programación General
dega1980 4 3,115 Último mensaje 10 Abril 2014, 20:42 pm
por dega1980
WAP2 - Aviso Legal - Powered by SMF 1.1.21 | SMF © 2006-2008, Simple Machines