FileInstallator v1
Re: FileInstallator v1
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
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
Re: FileInstallator v1
gracias tbn
le hice una ervision de syntasis y me arroja los sgte errores
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
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
Re: FileInstallator v1
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:
en cuando a la pregunta de Aprendiz, comento que a mi no me provoca error al saleccionar carpeta. Que SO tienes?
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
Re: FileInstallator v1
tengo el windows xp sp2.voy a probar compilar con la nueva version de autoit. saludos
Re: FileInstallator v1
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
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
- Chefito
- Profesional del Autoit
- Mensajes: 2035
- Registrado: 21 Feb 2008, 18:42
- Ubicación: Albacete/Cuenca (España)
Re: FileInstallator v1
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 .
Saludos.
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 .
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 ;).
Re: FileInstallator v1
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!
Espero que son eso pueda ejecutarse el programa, sin problemas.
gracias y hasta luego!
- Chefito
- Profesional del Autoit
- Mensajes: 2035
- Registrado: 21 Feb 2008, 18:42
- Ubicación: Albacete/Cuenca (España)
Re: FileInstallator v1
Para eso estamos .
Sí, parece que está reservada. Quien sabe...puede que esté dentro de una macro, en el propio lenguaje o que se yo .
Saludos.
Sí, parece que está reservada. Quien sabe...puede que esté dentro de una macro, en el propio lenguaje o que se yo .
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 ;).
Re: FileInstallator v1
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
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
- Chefito
- Profesional del Autoit
- Mensajes: 2035
- Registrado: 21 Feb 2008, 18:42
- Ubicación: Albacete/Cuenca (España)
Re: FileInstallator v1
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.
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 ;).
Re: FileInstallator v1
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
bye
- Chefito
- Profesional del Autoit
- Mensajes: 2035
- Registrado: 21 Feb 2008, 18:42
- Ubicación: Albacete/Cuenca (España)
Re: FileInstallator v1
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 ;).
Re: FileInstallator v1
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.
saludos.