FileInstallator v1

y programas personales para otros como tu, puede que te corrijan ;)
Aprendiz
Mensajes: 6
Registrado: 17 Ene 2009, 09:38

Re: FileInstallator v1

Mensaje por Aprendiz »

primero que nada gracias por compartir este tipo de programas que nos facilitan la vida a la hora de hacer aplicaciones portables quiero comentar que tengo un problema con el programa no lo e podido utilizar por un error.la verdad soy un novato en esto no se si el error es mio o del programa.
compile el codigo y cuando abro el programa al momento de tratar de seleccionar un directorio me marca error.
el error es el siguiente: error autoit

line-1:
error:incorrect number of parameters in functioncall

por favor alguien que me ayude.estoy muy interesado en este programa
Avatar de Usuario
timistar
Hacker del Foro
Mensajes: 89
Registrado: 24 Jun 2008, 05:03

Re: FileInstallator v1

Mensaje por timistar »

gracias tbn

le hice una ervision de syntasis y me arroja los sgte errores

Código: Seleccionar todo

C:\Documents and Settings\t-cesesc\Escritorio\fileinstall.au3(22,18) : ERROR: $Error previously declared as a 'Const'
Global $Error = 0,
~~~~~~~~~~~~~~~~~^
C:\Documents and Settings\t-cesesc\Escritorio\fileinstall.au3(165,38) : ERROR: $Error previously declared as a 'Const'
   If ($Contador = 0) Then $Error = 1
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~^
C:\Documents and Settings\t-cesesc\Escritorio\fileinstall.au3(166,39) : ERROR: $Error previously declared as a 'Const'
   If ($Contador <> 0) Then $Error = 0
no se mucho poer entiendo ago de codigo yme desconcierta le mesg priemro que dice antes declarado como constante , poruqe sle si ese error meaparece casi en la primera linea dle script
:smt040
Avatar de Usuario
Rupert.25
Hacker del Foro
Mensajes: 247
Registrado: 17 Jul 2007, 18:27

Re: FileInstallator v1

Mensaje por Rupert.25 »

Hola revisé el codigo, y no encontré ningun probleme. en mi PC lo corre perfecto, y copie el codigo desde este post, por si las dudas.

Te recomiendo que chekes si tienes la ultima version de AutoIt, y que vuelvas a copiar el codigo del post.
te lo dejo:

Código: Seleccionar todo

    #NoTrayIcon
    #Region ;**** Directives created by AutoIt3Wrapper_GUI ****
    #AutoIt3Wrapper_icon=Icono.ico
    #AutoIt3Wrapper_Res_Comment=Persiguiendo el saber!
    #AutoIt3Wrapper_Res_Description=Adjunta archivos en AutoIt
    #AutoIt3Wrapper_Res_Fileversion=1.0.0.5
    #AutoIt3Wrapper_Res_Fileversion_AutoIncrement=y
    #AutoIt3Wrapper_Res_LegalCopyright=Ruperto 2008
    #AutoIt3Wrapper_Res_Language=2058
    #EndRegion ;**** Directives created by AutoIt3Wrapper_GUI ****
    #include <GUIConstantsEx.au3>
    #include <StaticConstants.au3>
    #include <WindowsConstants.au3>
    #include <Array.au3>
    #include <Misc.au3>
    #include <String.au3>
    #include <File.au3>

    $Version = "FileInstallator v1"
    #Region ;Creando la interfaz grafica
    $Utilidades = GUICreate("Utilidades",300,200,-1,-1)
    Global $Error = 0,  $N
    $Principal = GUICreate("FileInstallator 1.0 By: Ruperto",500,400,-1,-1)
    $optTodoEnLaCarpeta = GUICtrlCreateRadio("Todos los archivos de una Carpeta",54,5)
    GUICtrlSetState(-1,$GUI_CHECKED)
    $optVariosArhivos = GUICtrlCreateRadio("Seleccionar Algunos archivos",250,5)
    GUICtrlCreateLabel("Ruta:",10,30)
    $txtRuta = GUICtrlCreateInput("",54,28,359)
    $cmdSelRec = GUICtrlCreateButton("···",415,27,20,23)
    $cmdRefrescar = GUICtrlCreateButton("Refrescar",435,27,55,23)
    GUICtrlCreateLabel("Destino:",10,55)
    $txtDestino = GUICtrlCreateInput("C:\MiPortable",55,53,358)
    $cmdSelDest = GUICtrlCreateButton("...",415,52,20,23)
    $cmdAyudaDest = GUICtrlCreateButton("Ayuda",435,52,55,23)
    $chkIncSub = GUICtrlCreateCheckbox("Incluir Subdirectorios",54,81)
    GUICtrlCreateLabel("Usar este Filtro:",198,85)
    $txtFiltro = GUICtrlCreateInput("(*.*) Cualquier Archivo",284,82,105)
    $Ayuda = GUICtrlCreateButton("?",390,81,24,23)
    $cmdUtilidades = GUICtrlCreateButton("+ Utilidades",416,81,70,23)
    $Obtener = GUICtrlCreateButton("Obtener Archivos",10,105,480,40)
    $txtCodigo = GUICtrlCreateEdit("",10,150,480,210)
    $cmdAbout = GUICtrlCreateButton("Acerca de...",10,370)
    $cmdSelTodo = GUICtrlCreateButton("Seleccionar todo",220,370)
    $cmdLimpiar = GUICtrlCreateButton("Limpiar",320,370)
    $cmdGenerarAu3 = GUICtrlCreateButton("Generar archivo .au3",370,370,122)

    GUISetState(@SW_SHOW)
    #EndRegion

    While 1
       $Evento = GUIGetMsg()
       Switch $Evento
          Case $cmdAyudaDest ;Ayuda para el apartado destino
             MsgBox(64,"Ayuda","Tambien puede llenar este campo como en los siguientes Ejemplos: " & @CRLF & @CRLF & _
                "1· @WorkingDir & ""\Temp"" (Con una macro de AutoIt)" & @CRLF & _
                "2· $PortableDir & ""\MiPortable"" (Con una variable)" & @CRLF & _
                "3· C:\MiPortable (Simplemente con una ruta)","",$Principal)
          Case $Ayuda
             MsgBox(64,"Ayuda","Para usar un filtro multiple use ';' (Punto y Coma) como separador, Por ejemplo: " & @CRLF & _
                @CRLF & """(*.Exe;*.Txt) Ejecutables y de texto""" & @CRLF & @CRLF & _
                "Siempre es necesario que el Filtro vaya entre parentesis, y lo que esta fuera es comentario",0,$Principal)
          Case $GUI_EVENT_CLOSE ;Si quiere cerrar
             If WinActive($Principal) Then         
                If MsgBox(36,"¿Salir?","¿Desea cerrar ahora?","",$Principal)=6 Then
                   Exit
                EndIf
             ElseIf WinActive($Utilidades) Then
                GUISetState(@SW_HIDE,$Utilidades)
             EndIf
          Case $cmdSelDest ;Si quiere seleccionar el destino
             SelDir("Seleccione la carpeta de destino",$txtDestino)
          Case $cmdSelRec
             If BitAND(GUICtrlRead($optTodoEnLaCarpeta),$GUI_CHECKED) Then
                If SelDir("Seleccione la carpeta de los archivos que desea adjuntar",$txtRuta) = 1 Then
                   if (MsgBox(36,"Obtener archivos?","¿Desea obtener los archivos de este directorio ahora?",0,$Principal)) = 6 Then
                      if ValidarFiltro() = 1 Then ObtenerFiles(GUICtrlRead($txtRuta),GUICtrlRead($txtFiltro))
                   EndIf
                EndIf
             Else
                if ValidarFiltro() = 1 Then
                   $A = FileOpenDialog("Seleccione los archivos que desea adjuntar",@DesktopDir,GUICtrlRead($txtFiltro),4,"",$Principal)
                   GenerarCodigo($A)
                EndIf
             EndIf   
          Case $Obtener
             if ValidarFiltro() = 1 Then ObtenerFiles(GUICtrlRead($txtRuta),GUICtrlRead($txtFiltro))
          Case $cmdUtilidades
             Utilidades()
          Case $cmdSelTodo ;Seleccionar todo
             GUICtrlSetState ($txtCodigo,$GUI_FOCUS)
             Send("^{END}")
             Send("^+{HOME}")
          case $cmdLimpiar
             GUICtrlSetData($txtCodigo,"")
          Case $cmdGenerarAu3 ;Generrar el Archivo au3
             If GUICtrlRead($txtCodigo) = "" Then
                MsgBox(16,"Error!!","Por ahora no es posible generar el archivo au3, pues no ha adjuntado ningún archivo",0,$Principal)
             Else
                $RutaAu3 = FileSaveDialog("Guardar archivo au3","","(*.au3) Archivos de AutoIt v3",16,"",$Principal)
                if @error = 0 Then
                   $Ext = StringMid($RutaAu3,StringLen($RutaAu3) - 3,4)
                   If Not ($Ext = ".au3") Then $RutaAu3 = $RutaAu3 & ".au3"
                   $RutaAu3Open = FileOpen($RutaAu3,1)
                   FileWriteLine($RutaAu3Open,";********************************************")
                   FileWriteLine($RutaAu3Open,@CRLF & ";Archivo generado con FileInstallator v1.0" & @CRLF & ";Creado por Ruperto - [[email protected]]")
                   FileWriteLine($RutaAu3Open,";********************************************")
                   FileWrite($RutaAu3Open,@CRLF & GUICtrlRead($txtCodigo))
                   FileClose($RutaAu3Open)
                   ShellExecute($RutaAu3)
                EndIf
             EndIf
          Case $cmdAbout
             MsgBox(64,$Version,$Version & " Ha sido creado por Ruperto - [[email protected]]" & @CRLF & @CRLF & "                         AutoIt v3 - [http://www.autoit.au3]",0,$Principal)
       EndSwitch
    WEnd

    Func SelDir($Mensaje, $Control) ;Esta funcion selecciona un direcorio y lo escribe en un control - Esto nos ahorra 8 lines de codigo
       $sDir = FileSelectFolder($Mensaje,"",1,"",$Principal)
       if Not @error = 1 Then
          GUICtrlSetData($Control, $sDir)
          Return 1
       Else
          Return 0
       EndIf
    EndFunc

    Func GenerarCodigo($Files); Funcion que genera el codigo de los archivos seleccionados
    $ArregloDeArchivosSeleccionados = StringSplit($Files,"|") ;Separamos lo que retorna la funcion FileSaveDialog a un arreglo
    $Ruta = $ArregloDeArchivosSeleccionados[1] ;En la posicion 1, se encuentra la ruta de donde se selccionaron los Archivos
    GUICtrlSetData($txtRuta,$Ruta) ;Cambiamos el valor de la caja de texto $txtRuta
    For $i = 2 To $ArregloDeArchivosSeleccionados[0] ;Rrecorremos el arreglo de los archivos seleccionados
       $Archivo = $ArregloDeArchivosSeleccionados[$i] ;Asigamos el Archivos actual del arreglo a la vaiable $archivo
       If StringMid($Archivo,2,1) = ":" Then ;Si en la posicion 2 tiene 2 puntos(:) es por que seleccionó un acceso directo
          GUICtrlSetData($txtCodigo,GUICtrlRead($txtCodigo) & "FileInstall(""" & _
             $Archivo & """,""" & GUICtrlRead($txtDestino) & "\" & $Archivo & """)" & @CRLF)
       Else ;Por el contario fue un archivo cualquiera del directorio Actual
          GUICtrlSetData($txtCodigo,GUICtrlRead($txtCodigo) & "FileInstall(""" & _
             $Ruta & "\" & $Archivo & """,""" & GUICtrlRead($txtDestino) & "\" & $Archivo & """)" & @CRLF)
       EndIf
    Next
    EndFunc

    Func Files2Array($Dir, $Filtro = "(*)") ;la funcion FileListToArray modificada para que permita multiples filtros
       Local $hSearch, $sFile, $asFileList = _ArrayCreate(0), $Contador = 0
       $Filtro1 = _StringBetween($Filtro,"(",")") ;Obtenemos lo que está entre parentesis
       If Not (FileExists($Dir)) Then Return SetError(1, 1, "")
       $Exts = StringSplit($Filtro1[0], ";")
       For $i = 1 To $Exts[0]
          $Filtro = $Exts[$i]
          $hSearch = FileFindFirstFile($Dir & "\" & $Filtro)
          While 1
             $sFile = FileFindNextFile($hSearch)
             If @error Then
                SetError(0)
                ExitLoop
             EndIf
             If StringInStr(FileGetAttrib($Dir & "\" & $sFile), "D") = 0 Then
                _ArrayAdd($asFileList, $sFile)
                $Contador= $Contador+ 1
             EndIf
          WEnd
       Next
       FileClose($hSearch)
       _ArrayDelete($asFileList,0)
       If ($Contador = 0) Then $Error = 1
       If ($Contador <> 0) Then $Error = 0
       Return $asFileList
    EndFunc   ;==>Files2Array

    Func ObtenerFiles($Dir, $Filtro = "(*)") ;Obtiene archivos de un directorio, sin incluir subdirectorios
    if FileExists($Dir) Then
       If BitAND(GUICtrlRead($chkIncSub),$GUI_CHECKED) Then ;Si elijió incluir subDirectorios
          $Archivos = Files2Array($Dir ,$Filtro) ;listamos los archivos que existen en la ruta proporcionada
          If StringMid($Dir,StringLen($Dir),1) = "\" Then $Dir = StringTrimRight($Dir,1) ;Si incluye Diagonal inversa, se la quitamos (0_0)
          If $Error = 0 Then GenerarCodigoA($Archivos, $Dir) ;Si no provocó error la funcion File2Array
          $Carpetas = _FileListToArray($Dir,"*",2) ;Agragamos a un arreglo todas las carpetas de una ruta Seleccionada
          if Not @error = 1 Then ;Si la funcion anterior no produce error
             For $b = 1 to $Carpetas[0] ;Reccoremos el arreglo de las carpetas!
                $Ruta = $Dir & "\" & $Carpetas[$b]
                GUICtrlSetData($txtCodigo,GUICtrlRead($txtCodigo) & "DirCreate(" & ObtenerDestino() & "\" & ObtenerNombre($Ruta) & """)" & @CRLF)
                $Archivos = Files2Array($Ruta,$Filtro)
                $Pose = (0 - $b)
                ObtenerFiles($Ruta, $Filtro)
             Next
          EndIf
       Else ;si no quiere incluir subDirectorios
          $Archivos = Files2Array($Dir ,$Filtro)
          If $Error = 0 Then
             GenerarCodigoA($Archivos, $Dir)
          Else
             MsgBox(64,"Error!","No hay archivos que obtener de: " & @CRLF & $Dir,0,$Principal)
          EndIf
       EndIf      
    Else
       MsgBox(16,"Error!","No existe la ruta recurso que usted ha escrito",0,$Principal)
    EndIf
    EndFunc

    Func GenerarCodigoA($Archivoss, $Dir) ;
    If FileExists($Dir) Then
       If StringMid($Dir,StringLen($Dir),1) = "\" Then $Dir = StringTrimRight($Dir,1)
       $Destino = ObtenerDestino()
       For $i = 0 To UBound($Archivoss) - 1
          $Archivo = $Dir & "\" & $Archivoss[$i]
          GUICtrlSetData($txtCodigo,GUICtrlRead($txtCodigo) & "FileInstall(""" & _
             $Archivo & """," & $Destino & "\" & ObtenerNombre($Archivo) & """)" & @CRLF)
       Next
    EndIf
    EndFunc

    Func ObtenerNombre($Archivo) ;obtiene el nombre del archivo
       $TamDeLaRuta = StringLen(GUICtrlRead($txtRuta)) + 1
       $Tam = StringLen($Archivo)
       $Archivo = StringRight($Archivo, $Tam - $TamDeLaRuta)
       Return $Archivo
    EndFunc

    Func ObtenerDestino() ;Obtiene el destino
       $Dest = StringStripWS(GUICtrlRead($txtDestino),3)
       If StringMid($Dest,1,1) = "@" or StringMid($Dest,1,1) = "$" Then
          If StringMid($Dest,StringLen($Dest),1) = """" Then $Dest = StringTrimRight($Dest,1)
          Return $Dest
       Else
          Return """" & $Dest
       EndIf
    EndFunc

    Func Utilidades()
       GUISetState(@SW_SHOW, $Utilidades)
    EndFunc

    Func ValidarFiltro() ;La funcion que valida el filtro
       If (StringInStr(GUICtrlRead($txtFiltro),"(") And StringInStr(GUICtrlRead($txtFiltro),")")) Then
          ;Si existen los caracteres ( y )
          if StringInStr(GUICtrlRead($txtFiltro),"(")+ 1 < StringInStr(GUICtrlRead($txtFiltro),")") Then ;Si la pos de ( es menor que la pos de )
             Return 1
          Else
             MsgBox(16,"Error!", "El filtro es invalido, por favor si tienes dudas presiona el boton '?'",0,$Principal)
             Return 0
          EndIf
       Else
          MsgBox(16,"Error!", "Por favor el filtro debe ir entre parentesis",0,$Principal)
          Return 0
       EndIf
    EndFunc
en cuando a la pregunta de Aprendiz, comento que a mi no me provoca error al saleccionar carpeta. Que SO tienes?
Aprendiz
Mensajes: 6
Registrado: 17 Ene 2009, 09:38

Re: FileInstallator v1

Mensaje por Aprendiz »

tengo el windows xp sp2.voy a probar compilar con la nueva version de autoit. saludos :smt023
Aprendiz
Mensajes: 6
Registrado: 17 Ene 2009, 09:38

Re: FileInstallator v1

Mensaje por Aprendiz »

ya trate compilarlo con la nueva version de autoit y me sigue dando error:

C:\Documents and Settings\Administrador\Escritorio\FileInstallator v1.au3(22,22) : ERROR: $Error previously declared as a 'Const'
Global $Error = 0,
~~~~~~~~~~~~~~~~~~~~~^
C:\Documents and Settings\Administrador\Escritorio\FileInstallator v1.au3(165,42) : ERROR: $Error previously declared as a 'Const'
If ($Contador = 0) Then $Error = 1
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~^
C:\Documents and Settings\Administrador\Escritorio\FileInstallator v1.au3(166,43) : ERROR: $Error previously declared as a 'Const'
If ($Contador <> 0) Then $Error = 0
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~^
C:\Documents and Settings\Administrador\Escritorio\FileInstallator v1.au3 - 3 error(s), 0 warning(s)

help
Avatar de Usuario
Chefito
Profesional del Autoit
Mensajes: 2035
Registrado: 21 Feb 2008, 18:42
Ubicación: Albacete/Cuenca (España)

Re: FileInstallator v1

Mensaje por Chefito »

Para que te funcione con el último AutoIt, debes cambiar la variable $Error por otro nombre....por ejemplo $ErrorPrograma.

Dale en la barra de herramientas (arriba) al icono de a lupa pequeña con las dos flechitas (reemplazar), y pon que reemplace $Error por $ErrorPrograma. Dale al botón reemplazar todo y ya estará solucionado :smt023 .

Saludos.
Cita vista en algún lugar de la red: En este mundo hay 10 tipos de personas, los que saben binario y los que no ;).
Avatar de Usuario
Rupert.25
Hacker del Foro
Mensajes: 247
Registrado: 17 Jul 2007, 18:27

Re: FileInstallator v1

Mensaje por Rupert.25 »

Muchas gracias Chefito. Al parecer la variable $Error, la han reserado en esta nueva version.

Espero que son eso pueda ejecutarse el programa, sin problemas.

gracias y hasta luego!
Avatar de Usuario
Chefito
Profesional del Autoit
Mensajes: 2035
Registrado: 21 Feb 2008, 18:42
Ubicación: Albacete/Cuenca (España)

Re: FileInstallator v1

Mensaje por Chefito »

Para eso estamos :smt023 .
Sí, parece que está reservada. Quien sabe...puede que esté dentro de una macro, en el propio lenguaje o que se yo :smt017 .

Saludos.
Cita vista en algún lugar de la red: En este mundo hay 10 tipos de personas, los que saben binario y los que no ;).
Aprendiz
Mensajes: 6
Registrado: 17 Ene 2009, 09:38

Re: FileInstallator v1

Mensaje por Aprendiz »

pues comento que la solucion de chefito me sirvio hasta cierto punto,antes no podia seleccionar la ruta a escanear ahora si puedo.pero todo funciona como lo comente antes hasta el punto que me muestra la ventana preguntando: desea obtener los archivos de este directorio ahora?
cuando le doy en si me da el siguiente error:
line-1:
error:cannot assign values to constants

dejenme agradecer por su ayuda y disculpenme por tantas molestias la verdad soy un principiante y no se si el error es mio o del programa.

saludos
Avatar de Usuario
Chefito
Profesional del Autoit
Mensajes: 2035
Registrado: 21 Feb 2008, 18:42
Ubicación: Albacete/Cuenca (España)

Re: FileInstallator v1

Mensaje por Chefito »

Cambiando el nombre del $Error por otro nombre, el programa va perfectamente, sin compilar y compilado (comprobado).
Va entero.
A ver si se te ha olvidado cambiar alguna variable del script.

Saludos.
Cita vista en algún lugar de la red: En este mundo hay 10 tipos de personas, los que saben binario y los que no ;).
Aprendiz
Mensajes: 6
Registrado: 17 Ene 2009, 09:38

Re: FileInstallator v1

Mensaje por Aprendiz »

bueno hice todo tal como tu lo describes pero me sigue dando error. si no es mucha molestia me podrias facilitar el programa ya compilado para comprobar si mi sistema operativo tiene algun fallo.gracias por la ayuda

bye
Avatar de Usuario
Chefito
Profesional del Autoit
Mensajes: 2035
Registrado: 21 Feb 2008, 18:42
Ubicación: Albacete/Cuenca (España)

Re: FileInstallator v1

Mensaje por Chefito »

Te lo dejo aquí:
http://www.megaupload.com/?d=ZDRRL4WI

Saludos.
Cita vista en algún lugar de la red: En este mundo hay 10 tipos de personas, los que saben binario y los que no ;).
Aprendiz
Mensajes: 6
Registrado: 17 Ene 2009, 09:38

Re: FileInstallator v1

Mensaje por Aprendiz »

muchas gracias chefito por toda la ayuda brindada, el programa me funciono de maravilla ahora solo me queda la duda por que no me funciono con la version 3.2 y 3.3 de autoit. que podria ser? tengo el xp sp2. mis mas sinceros agradecimientos al creador de este programa funciona al 100%

saludos.
Responder