Stratos: Punto de Encuentro de Desarrolladores

¡Bienvenido a Stratos!

Acceder

Foros





Probleba con desinstalador Nullsoft

Iniciado por alberizo, 03 de Mayo de 2007, 12:15:40 PM

« anterior - próximo »

alberizo

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

Buffon

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.

DIGITAL KICKERS

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 :)

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.

Buffon

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.

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?

Buffon

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.






Stratos es un servicio gratuito, cuyos costes se cubren en parte con la publicidad.
Por favor, desactiva el bloqueador de anuncios en esta web para ayudar a que siga adelante.
Muchísimas gracias.