Foros - Stratos

Programadores => General Programadores => Mensaje iniciado por: alberizo en 03 de Mayo de 2007, 12:15:40 PM

Título: Probleba con desinstalador Nullsoft
Publicado por: alberizo en 03 de Mayo de 2007, 12:15:40 PM
A ver si vosotros veis donde falla esto. Os dejo el código, instala bien, borra los archivos, borra el registro, pero no me borra los malditos accesos directos :S


SectionGroup "AGdistro" sec_agdistro
 
   InstallDir "$PROGRAMFILES\AGdistro"
   
   ;------------------------------------------------------------------------ AGdistro (Básico)
   Section "AGdistro (Básico)" sec_agdistro_1
     ;- Preselecciones  
       SectionIn RO
   
     ;- FILE >> SetOutPath (Copio los archivos recursivamente y los empaqueta)
       SetOutPath $INSTDIR
       File /r /x "Thumbs.db" "data\AGdistro\*.*"
   
     ;- Registando el programa
       WriteRegStr HKLM "SOFTWARE\AGdistro" "Install_Dir" "$INSTDIR"
       WriteRegStr HKLM "Classes\Applications\agdistro.exe\shell\open\command" "" "$INSTDIR\agdistro.exe %1"
   
     ;- Desinstalador
       WriteRegStr HKLM "SOFTWARE\Microsoft\Windows\CurrentVersion\Uninstall\AGdistro" "DisplayName" "AGdistro"
       WriteRegStr HKLM "SOFTWARE\Microsoft\Windows\CurrentVersion\Uninstall\AGdistro" "UninstallString" "$INSTDIR\uninstall.exe"
       WriteUninstaller "$INSTDIR\uninstall.exe"
   SectionEnd

   
   ;------------------------------------------------------------------------ Acessos directos en menu Inicio
     Section "Añadir accesos directos al menú Inicio" sec_agdistro_3
       ;- Preselecciones  
       SectionIn 1 2 3
       
       CreateDirectory "$SMPROGRAMS\AGdistro"
       CreateShortCut "$SMPROGRAMS\AGdistro\AGdistro.lnk" "$INSTDIR\agdistro.exe"
       CreateShortCut "$SMPROGRAMS\AGdistro\Uninstall.lnk" "$INSTDIR\uninstall.exe"
     SectionEnd
     
     
   ;------------------------------------------------------------------------ Abrir .agd con AGdistro
     Section "Abrir .agd con AGdistro" sec_agdistro_4
       ;- Preselecciones  
         SectionIn 1 2 3
     
       WriteRegStr HKCR ".agd" "" "AGdistro"
       WriteRegStr HKCR "AGdistro" "" "Archivo AGdistro"
       WriteRegStr HKCR "AGdistro\shell" "" "Abrir"
       WriteRegStr HKCR "AGdistro\DefaultIcon" "" "$INSTDIR\agdistro.exe,1"
       WriteRegStr HKCR "AGdistro\shell\open\command" "" '"$INSTDIR\agdistro.exe" "%1"'
       
       WriteRegStr HKCU "Software\Microsoft\Windows\CurrentVersion\Explorer\FileExts\.agd" "Application" "agdistro.exe"
       WriteRegStr HKCU "Software\Microsoft\Windows\CurrentVersion\Explorer\FileExts\.agd\OpenWithList" "a" "agdistro.exe"
       WriteRegStr HKCU "Software\Microsoft\Windows\CurrentVersion\Explorer\FileExts\.agd" "MRUList" "a"
     SectionEnd


SectionGroupEnd


   UninstallText "¿Estás seguro de querer desinstalar AGdistro? Pulsa siguiente para continuar."
   
   ;------------------------------------------------------------------------ Seccion de desinstalador
   Section "Uninstall"
     ;- Eliminar registro
       DeleteRegKey HKLM "SOFTWARE\Microsoft\Windows\CurrentVersion\Uninstall\AGdistro"
       DeleteRegKey HKLM "SOFTWARE\AGdistro"
       DeleteRegKey HKCR ".agd"
       DeleteRegKey HKCR "agdistro"
     ;- Eliminar accesos directos
       RMDir /r "$SMPROGRAMS\AGdistro\.."
     ;- Eliminar archivos
       RMDir /r $INSTDIR\..
   SectionEnd
Título: Probleba con desinstalador Nullsoft
Publicado por: Buffon en 03 de Mayo de 2007, 01:44:44 PM
Puede ser esto ?
     ;- Eliminar accesos directos
       RMDir /r "$SMPROGRAMS\AGdistro\.."
     ;- Eliminar archivos
       RMDir /r $INSTDIR\..

yo tengo el instalador con NSIS también xD

bueno al tema, esos "" con ese \.. no me suena bien, si no intenta eliminar directamente el fichero por su nombre.
Título: Probleba con desinstalador Nullsoft
Publicado por: DIGITAL KICKERS en 03 de Mayo de 2007, 03:26:13 PM
Hola, yo también uso este creador de instaladores.

Según como lo he usado siempre,  para borrar los accesos directos haría:

;- Eliminar accesos directos
Delete "$SMPROGRAMS\AGdistro\*.*"

Si hubiera alguno en el escritorio sería así:
Delete "$DESKTOP\elnombredelicono.lnk"

Espero que te sirva y hasta otra :)
Título: Probleba con desinstalador Nullsoft
Publicado por: alberizo en 03 de Mayo de 2007, 08:23:47 PM
Vale, ya he encontrado el problema, a este archivo le hago un include, y en el archivo principal no recordaba que tenia un "SetShellVarContext all" para que se instale en la cuenta de todos los usuario, así que he puesto un MessageBox en el desinstalador y me lo intentaba hacer de mi cuenta de usuario, así que claro no existía, no obstante si selecciono la cuenta de "All users" sigue sin eliminarme los archivos, ¿es que no tengo permisos de eliminación sobre esa cuenta? Haciendolo sobre mi cuenta si funciona a la perfección, gracias no obstante ^_^

Lo de las dobles comillas lo pongo por los espacios, porque alguna vez me ha fallado si la carpeta tiene un espacio en blanco, y como vi que funcionaba con las dobles comillas pues ya las uso siempre.
Y lo de "\.." lo que hace es borrar la carpeta padre, osease ella misma, es una tonteria, ya solo lo hacia por probar.
Título: Probleba con desinstalador Nullsoft
Publicado por: Buffon en 03 de Mayo de 2007, 08:53:16 PM
Cita de: "alberizo"Vale, ya he encontrado el problema, a este archivo le hago un include, y en el archivo principal no recordaba que tenia un "SetShellVarContext all" para que se instale en la cuenta de todos los usuario, así que he puesto un MessageBox en el desinstalador y me lo intentaba hacer de mi cuenta de usuario, así que claro no existía, no obstante si selecciono la cuenta de "All users" sigue sin eliminarme los archivos, ¿es que no tengo permisos de eliminación sobre esa cuenta? Haciendolo sobre mi cuenta si funciona a la perfección, gracias no obstante ^_^

Lo de las dobles comillas lo pongo por los espacios, porque alguna vez me ha fallado si la carpeta tiene un espacio en blanco, y como vi que funcionaba con las dobles comillas pues ya las uso siempre.
Y lo de "\.." lo que hace es borrar la carpeta padre, osease ella misma, es una tonteria, ya solo lo hacia por probar.

pues de muerte entonces ^^

aunque tiene que haber una variable de NSIS que te indique la carpeta de todos los usuarios.
Título: Probleba con desinstalador Nullsoft
Publicado por: alberizo en 03 de Mayo de 2007, 09:14:16 PM
Claro eso se hace con "SetShellVarContext all", pero por lo visto para el desinstalador tambien hay que ponerlo, vamos por duplicado, el caso es que no los borra, supongo que tendrá que ver con permisos :S

Y para seleccionar una cuenta de usuario yo lo hago así:

UserInfo::GetName
Pop $0

Y en la variable $0 me guarda el valor del usuario, ¿hay alguna forma más directamente, porque parece un poco chapuzero ¿no?
Título: Probleba con desinstalador Nullsoft
Publicado por: Buffon en 04 de Mayo de 2007, 09:00:13 AM
Cita de: "alberizo"Claro eso se hace con "SetShellVarContext all", pero por lo visto para el desinstalador tambien hay que ponerlo, vamos por duplicado, el caso es que no los borra, supongo que tendrá que ver con permisos :S

Y para seleccionar una cuenta de usuario yo lo hago así:

UserInfo::GetName
Pop $0

Y en la variable $0 me guarda el valor del usuario, ¿hay alguna forma más directamente, porque parece un poco chapuzero ¿no?

No creo que haya, yo utilizo el NSIS para un instalador de drivers y para saber la versión de Windows que está utilizando también tengo que hacer Pop sobre un registro para luego compararlo.