0. Exemple

J'ai mon domaine Windows à la maison géré par Samba/OpenLDAP en tant que PDC.

Je veux utiliser NSIS pour me créer un petit exe qui affiche un petit message de bienvenue lors de l'ouverture de session.

Ca affichera pendant une dizaine de seconde

Message de bienvenue apparaissant (pendant quelques secondes) lors de l'ouverture de session pour un domaine en PDC géré par Samba/OpenLDAP

1. Motivations

  1. Travailler avec NSIS sous Windaube c'est bien mais l'avoir sous Nunux c'est encore mieux

    Si vous travaillez avec quelqu'un qui est sous Nunux et vous sous Windaube, ca évitera qu'il vienne vous squatter votre ordi pour compiler ses scripts de NSIS. (Moi je dis ça mais je dis rien)
  2. De plus les paquets .deb proposés par Debian sont quand même assez anciens. Il est intéressant de disposer d'une version à jour

    melina-xen07:~/example# apt-cache policy nsis
    nsis:
      Installé : (aucun)
      Candidat : 2.37-3
     Table de version :
         2.37-3 0
            500 http://ftp.us.debian.org lenny/main Packages
    
  3. Par ailleurs le paquet est incomplet comme l'atteste
    melina-xen07:~/example# apt-cache show nsis |tail -6 |head -3
     Some parts of nsis cannot be built on Debian because of non-free
     requirements. Please see the following file for more information:
     /usr/share/doc/nsis/README.Debian
    

2. Pré-requis

Cette version de NSIS suppose d'installer scons, python et gcc/g++. Pour scons, il faut une version supérieure à 0.98 Ca tombe bien. Sous Lenny, on a
melina-xen07:~/nsis_work# apt-cache show scons | grep -i ^version
Version: 1.0.0-1
Donc on peut installer
apt-get update
apt-get install -y python scons g++ gcc bzip2 unzip mingw32-binutils mingw32 mingw32-runtime libpthread-stubs0-dev

2. Téléchargement

On télécharge nsis-2.46-src.tar.bz2. On décompresse ensuite
wget -q http://sourceforge.net/projects/nsis/files/NSIS%202/2.46/nsis-2.46-src.tar.bz2/download -O nsis-2.46-src.tar.bz2 && tar xjf nsis-2.46-src.tar.bz2
Ou sinon le tout à la voléé
wget -q http://sourceforge.net/projects/nsis/files/NSIS%202/2.46/nsis-2.46-src.tar.bz2/download -O - |tar xjf -

3. Compilation et installation

Rien de plus simple que
scons PREFIX=/opt/nsis install

4 .Exemple

4.1 Le script
Le script welcome.nsi utilisé sera donc
/*

    Script de connexion au domaine DavidGIS.fr
*/
!define PRODUCT_NAME "Welcome"
!define PRODUCT_VERSION "0.1"
!define PRODUCT_PUBLISHER "Jean David TECHER"
!define PRODUCT_WEB_SITE "http://www.davidgis.fr"

SetCompressor zlib

Name "${PRODUCT_NAME} ${PRODUCT_VERSION}"
OutFile "${PRODUCT_NAME}-${PRODUCT_VERSION}.exe"
InstallDir "$TEMP"
# Mode silencieux
SilentInstall silent

# Ecran de bienvenue inspiré de http://nsis.sourceforge.net/Docs/Splash/splash.txt
####################################################################
Function .onInit
  SetOutPath $TEMP
  File /oname=spltmp.bmp "welcome_davidgis.bmp"

  splash::show 10000 $TEMP\spltmp

#  advsplash::show 3000 1600 1400 0xFFFFFF $TEMP\spltmp

  Pop $0 ; $0 has '1' if the user closed the splash screen early,
     ; '0' if everything closed normally, and '-1' if some error occurred.

  Delete $TEMP\spltmp.bmp
FunctionEnd


Section "Principal" SEC01
SetOverwrite on
SetOutPath "$TEMP"
File "connexion.txt"
Exec `cmd /c echo %COMPUTERNAME%: l'utilisateur "%USERNAME%" est connecté sur le domaine "%USERDOMAIN%"  >> %TEMP%\connexion.txt`
SectionEnd

Section -Post

SectionEnd
4.2 Compilation et mise en place avec Samba
Pour la compilation
/opt/nsis/bin/makensis welcome.ns
qui générera le fichier Welcome-0.1.exe

Mon serveur Samba est sur l'hote olivia.davidgis.fr. Pour mon Samba, j'ai configuré mon netlogon ainsi de manière général pour tout les utilisateurs

root@olivia:~# grep logon /etc/samba/smb.conf|grep -E '(script|netlogon)'
logon script = logon.bat
[netlogon]
path = /home/netlogon
C'est donc /home/netlogon/logon.bat que je vais devoir modifier.

Il suffit donc de copier Welcome-0.1.exe sur un partage commun à tous afin de le rendre accessible à tous les utilisateurs. Par exemple

root@olivia:~# grep '\[partage\]' -A5 /etc/samba/smb.conf
[partage]
comment = Repertoire commun
browseable = Yes
writeable = Yes
public = No
path = /home/partage

On le copie donc sur /home/partage

Le contenu de /home/partage devient donc

root@olivia:~# cat /home/netlogon/logon.bat
\\olivia\partage\Welcome-0.1.exe
net use p: \\olivia\partage
net use u: \\olivia\%username%