Problema con instalar cursores desde BAT

Iniciado por jsa, 15 Agosto 2016, 14:02 PM

0 Miembros y 1 Visitante están viendo este tema.

jsa

Hola,
He hecho varios grupos de cursores para Windows 10 con su respectivo fichero de instalación con extensión INF.
Poniendo el cursor encima del fichero INF y clicando el botón derecho del ratón sale un menú contextual, clico en la opción "Instalar" y el grupo de cursores se instala sin ningún problema.
Pero lo que no consigo hacer es hacer un fichero con extensión BAT que instale todos los grupos de cursores de una sola vez, y así no tener que instalar uno a uno los cursores con el menu contextual.
El código del fichero INF es el siguiente:

install_jacc_01.inf
Código (DOS) [Seleccionar]
[Version]
signature="$CHICAGO$"

[DefaultInstall]
CopyFiles = Scheme.Cur, Scheme.Txt, Scheme.Png
AddReg    = Scheme.Reg

[DestinationDirs]
Scheme.Cur = 10,"%CUR_DIR%"
Scheme.Txt = 10,"%CUR_DIRB%"
Scheme.Png = 10,"%CUR_DIRB%"

[Scheme.Reg]
HKCU,"Control Panel\Cursors\Schemes","%SCHEME_NAME%",,"%10%\%CUR_DIR%\%arrow%,%10%\%CUR_DIR%\%helpsel%,%10%\

%CUR_DIR%\%working%,%10%\%CUR_DIR%\%busy%,%10%\%CUR_DIR%\%cross%,%10%\%CUR_DIR%\%text%,%10%\%CUR_DIR%\%pen%,

%10%\%CUR_DIR%\%unavail%,%10%\%CUR_DIR%\%ns%,%10%\%CUR_DIR%\%ew%,%10%\%CUR_DIR%\%nwse%,%10%\%CUR_DIR%\%nesw%,

%10%\%CUR_DIR%\%move%,%10%\%CUR_DIR%\%up%,%10%\%CUR_DIR%\%link%"

; -- Common Information

[Scheme.Cur]
jacc_01_arrow.cur
jacc_01_busy.ani
jacc_01_cross.cur
jacc_01_ew.cur
jacc_01_helpsel.cur
jacc_01_link.cur
jacc_01_move.cur
jacc_01_nesw.cur
jacc_01_ns.cur
jacc_01_nwse.cur
jacc_01_pen.cur
jacc_01_text.cur
jacc_01_unavail.cur
jacc_01_up.cur
jacc_01_working.ani
[Strings]
CUR_DIR       = "Cursors\j_alsina_cursors_collection\jacc_01"
CUR_DIRB      = "Cursors\j_alsina_cursors_collection"
SCHEME_NAME   = "jacc_01"
arrow         = "jacc_01_arrow.cur"
busy          = "jacc_01_busy.ani"
cross         = "jacc_01_cross.cur"
ew            = "jacc_01_ew.cur"
helpsel       = "jacc_01_helpsel.cur"
link          = "jacc_01_link.cur"
move          = "jacc_01_move.cur"
nesw          = "jacc_01_nesw.cur"
ns            = "jacc_01_ns.cur"
nwse          = "jacc_01_nwse.cur"
pen           = "jacc_01_pen.cur"
text          = "jacc_01_text.cur"
unavail       = "jacc_01_unavail.cur"
up            = "jacc_01_up.cur"
working       = "jacc_01_working.ani"
[Scheme.Txt]
_terms_of_use.txt
[Scheme.Png]
_j_alsina_cursors_collection_01.png


He probado hacer el fichero BAT con estos 2 códigos que en teoría deberían funcionar:

jacc_bat.bat
%SystemRoot%\System32\rundll32.exe setupapi,InstallHinfSection DefaultInstall 132 .\install_jacc_01.inf

jacc_bat.bat
RUNDLL32.EXE SETUPAPI.DLL,InstallHinfSection DefaultInstall 132 .\install_jacc_01.inf

Pero cuando lo ejecuto, aparece lo siguiente (incluso si lo ejecuto como Administrador):
Error de copia
El programa de instalación no puede copiar el archivo jacc_01_arrow.cur.
La ubicación actual no es correcta, cámbiela o inserte "(Desconocido") en la unidad especificada.

Me gustaría instalar varios ficheros INF a la vez y que al finalizar, saliera un mensaje diciendo "Instalación finalizada" o algo parecido.
Todos los ficheros están ubicados juntos en la misma carpeta, no encuentro dónde está el error.
Espero vuestras respuestas para solucionar la cuestión.
Muchas gracias.

Eleкtro

Hola
El script de instalación y la llamada a rundll32.exe son correctas.

Solo he podido reproducir el error que mencionaste, modificándole la extensión .ani a .cur a uno de los recursos del esquema, así que solo te puedo decir que te asegures de que todos estos archivos realmente existen, y que todos tengan bien colocada su respectiva extensión cur/any:

Citarjacc_01_arrow.cur
jacc_01_busy.ani
jacc_01_cross.cur
jacc_01_ew.cur
jacc_01_helpsel.cur
jacc_01_link.cur
jacc_01_move.cur
jacc_01_nesw.cur
jacc_01_ns.cur
jacc_01_nwse.cur
jacc_01_pen.cur
jacc_01_text.cur
jacc_01_unavail.cur
jacc_01_up.cur
jacc_01_working.ani

Revisa los archivos, revisa que todos los nombres concuerden correctamente.

Saludos








jsa

Hola,
He revisado todos los nombres y extensiones, y los ficheros existen. Incluso he probado suprimiendo el guión bajo (_), por si este caracter provocara el fallo, y tampoco funciona el script. Sigo atascado...alguna idea?

tincopasan

perdón, pero voy a ir por lo más básico, supongo que todos los archivos(incluidos el i.nf y el .bat) están dentro de la carpeta "Cursors\j_alsina_cursors_collection\"

jsa

El BAT debe poder ejecutarse desde cualquier ubicación. El directorio destino de la instalación es Windows\Cursors\j_alsina_cursors_collection\ y da igual la letra de la unidad, C, D, o la letra que sea ya que el propio script del BAT se encarga de localizar en qué unidad se encuentra la carpeta Windows.

jsa

Dejo el link para descargar los ficheros por si alguien puede encontrar la solución.

Link: https://drive.google.com/file/d/0BwjKzIeaLA3JU0lTdkFpYTRrb3M/view?usp=sharing

jsa

Hola de nuevo,

Ya sé dónde estaba el fallo. Faltaba asignar al BAT permisos de ejecutarlo como Administrador. Pero no lo he conseguido directamente con el BAT, y si al convertirlo en EXE con un convertidor de archivos BAT a EXE (he utilizado BATtoEXE Converter). Después de haberlo convertido, he seleccionado el archivo EXE y en Propiedades - Compatibilidad, he activado la casilla que dice "Ejecutar este programa como administrador" y listo.

Código archivo BAT:
@echo off
title JACC - J_ALSINA_CURSORS_COLLECTION_1
mode con cols=70 lines=15
color 8F
echo  JACC 01
rundll32 syssetup,SetupInfObjectInstallAction DefaultInstall 128 .\install_jacc_01.inf
echo  JACC 01+
rundll32 syssetup,SetupInfObjectInstallAction DefaultInstall 128 .\install_jacc_01_plus.inf
echo  JACC 02
rundll32 syssetup,SetupInfObjectInstallAction DefaultInstall 128 .\install_jacc_02.inf
echo  JACC 02+
rundll32 syssetup,SetupInfObjectInstallAction DefaultInstall 128 .\install_jacc_02_plus.inf
echo  JACC 03
rundll32 syssetup,SetupInfObjectInstallAction DefaultInstall 128 .\install_jacc_03.inf
echo  JACC 03+
rundll32 syssetup,SetupInfObjectInstallAction DefaultInstall 128 .\install_jacc_03_plus.inf
echo  JACC 04
rundll32 syssetup,SetupInfObjectInstallAction DefaultInstall 128 .\install_jacc_04.inf
echo  JACC 04+
rundll32 syssetup,SetupInfObjectInstallAction DefaultInstall 128 .\install_jacc_04_plus.inf
echo  JACC 05
rundll32 syssetup,SetupInfObjectInstallAction DefaultInstall 128 .\install_jacc_05.inf
echo  JACC 05+
rundll32 syssetup,SetupInfObjectInstallAction DefaultInstall 128 .\install_jacc_05_plus.inf
cls
echo.
echo  JACC - J_ALSINA_CURSORS_COLLECTION_1
echo.
echo  CURSORES INSTALADOS
echo.
echo  Elige tu grupo favorito de cursores para
echo  Windows desde el Panel de Control
echo.
pause>nul
exit


Pero el instalador no está del todo como yo quisiera. A medida que se instalan los ficheros INF, sale en la pantalla una pequeña ventana indicando que se están copiando los archivos. Sale en un brevísimo espacio de tiempo, décimas de segundo, pero en 10 ocasiones ya que hay 10 ficheros INF. Estaría genial que no se viera en ningún momento. ¿Alguien me puede dar una solución?

Aquí dejo el link para descargar la aplicación final totalmente corregida (ejecutar primero el fichero "install_jacc.exe"):
https://drive.google.com/file/d/0BwjKzIeaLA3JdzhYSjFVZnRudVU/view?usp=sharing

JUSUBZERO

Pode colocar o download do .BAT sem erro por favor?