; This sample is old and was likely in a testing state. ; The current live sample is unavailable because the code ; is for a private employer ;-------------------------- ; example of what a single install NSI file would look like !define vendor "Vendor Name" !define vendorid "1" !define buildname "Program_Installer" !include Contrib\main.nsi ;--------------------------- ; ----- ; common main.nsi ; ----- !include LogicLib.nsh ; define specialized variables !define version "2.1.1" !define ftpdate "Wed, 19 Oct 2005 13:20:00 GMT" !define exedate "Fri, 30 Sep 2005 18:00:00 GMT" !define builderdate "Fri, 30 Sep 2005 18:00:00 GMT" ; dynamic link to vendor specific files !define mainexe "Contrib\${vendor}\${vendor}.exe" !define splashfile "Contrib\${vendor}\Splash.bmp" !define logofile "Contrib\${vendor}\${vendorid}\logobanner.gif" !define configfile "Contrib\${vendor}\${vendorid}\${vendor}.exe.config" ; Common shared files !define ftpfile "Contrib\Support\AbmFTP.exe" !define abmloaderfile "Contrib\Support\Abmloader.exe" ; destination for logging URL !define URL_LOG "http://domain.ext/log.php" Name "${vendor}" OutFile "Installers\${buildname}.exe" Icon "Contrib\${vendor}\icon.ico" InstallDir $PROGRAMFILES\${vendor} InstallDirRegKey HKLM "Software\${vendor}" "Install_Dir" Var GUID LoadLanguageFile "${NSISDIR}\Contrib\Language files\English.nlf" LoadLanguageFile "${NSISDIR}\Contrib\Language files\Dutch.nlf" LoadLanguageFile "${NSISDIR}\Contrib\Language files\French.nlf" LoadLanguageFile "${NSISDIR}\Contrib\Language files\German.nlf" LoadLanguageFile "${NSISDIR}\Contrib\Language files\Spanish.nlf" LoadLanguageFile "${NSISDIR}\Contrib\Language files\Italian.nlf" LicenseLangString myLicenseData ${LANG_GERMAN} "Contrib\Support\DE\license.txt" LicenseLangString myLicenseData ${LANG_ENGLISH} "Contrib\Support\EN\license.txt" LicenseLangString myLicenseData ${LANG_SPANISH} "Contrib\Support\ES\license.txt" LicenseLangString myLicenseData ${LANG_FRENCH} "Contrib\Support\FR\license.txt" LicenseLangString myLicenseData ${LANG_ITALIAN} "Contrib\Support\IT\license.txt" LicenseLangString myLicenseData ${LANG_DUTCH} "Contrib\Support\NL\license.txt" LangString DOT_NET_REQ ${LANG_ENGLISH} ".NET Framework 1.1 is required for this application.$\nIf you do not install .NET Framework at this time you will need to reinstall all the software to install .NET Framework.$\nClick 'Yes' to get .NET Framework from the Internet." LangString DESC_PROGRESS ${LANG_ENGLISH} "%dkB (%d%%) / %dkB @ %d.%01dkB/s" LangString DESC_CONNECTING ${LANG_ENGLISH} "Downloading..." LangString DESC_DOWNLOADING ${LANG_ENGLISH} "Downloading %s" LangString RUN_PROG ${LANG_ENGLISH} "Run" LangString LANG_STR ${LANG_ENGLISH} "EN" LangString URL_DOTNET ${LANG_ENGLISH} "http://domain.ext/download/dotnet/EN/dotnetfx.exe" LangString DOT_NET_REQ ${LANG_DUTCH} ".NET Framework 1.1 is nodig voor deze applicatie.$\nIndien U .NET Framework niet op dit ogenblik download, dan zult U de hele software opnieuw moeten installeren om uiteindelijk .NET Framework te kunnen downloaden.$\nKlik 'Ja' om .NET Framework te downloaden van Internet." LangString DESC_PROGRESS ${LANG_DUTCH} "%dkB (%d%%) / %dkB @ %d.%01dkB/s" LangString DESC_CONNECTING ${LANG_DUTCH} "Downloading..." LangString DESC_DOWNLOADING ${LANG_DUTCH} "Downloading %s" LangString RUN_PROG ${LANG_DUTCH} "Run" LangString LANG_STR ${LANG_DUTCH} "NL" LangString URL_DOTNET ${LANG_DUTCH} "http://domain.ext/download/dotnet/NL/dotnetfx.exe" LangString DOT_NET_REQ ${LANG_FRENCH} ".NET Framework 1.1 est requis pour cette application.$\nSi vous ne téléchargez pas .NET Framework maintenant, vous devrez ré-installer tout le software par la suite afin de pouvoir télécharger .NET Framework d'Internet.$\nCliquez « Oui » pour télécharger .NET Framework d'Internet." LangString DESC_PROGRESS ${LANG_FRENCH} "%dkB (%d%%) / %dkB @ %d.%01dkB/s" LangString DESC_CONNECTING ${LANG_FRENCH} "Téléchargement de..." LangString DESC_DOWNLOADING ${LANG_FRENCH} "Téléchargement de %s" LangString RUN_PROG ${LANG_FRENCH} "Run" LangString LANG_STR ${LANG_FRENCH} "FR" LangString URL_DOTNET ${LANG_FRENCH} "http://domain.ext/download/dotnet/FR/dotnetfx.exe" LangString DOT_NET_REQ ${LANG_GERMAN} "Für diese Anwendung wird .NET Framework 1.1 benötigt.$\nWenn Sie .Net nicht vor der Installation des Programmes installieren, müssen Sie später die komplette Software noch einmal neu installieren.$\nKlicken Sie auf 'Ja', um .NET Framework jetzt herunterzuladen." LangString DESC_PROGRESS ${LANG_GERMAN} "%dkB (%d%%) / %dkB @ %d.%01dkB/s" LangString DESC_CONNECTING ${LANG_GERMAN} "Herunterladen..." LangString DESC_DOWNLOADING ${LANG_GERMAN} "Herunterladen %s" LangString RUN_PROG ${LANG_GERMAN} "Programm ausführen" LangString LANG_STR ${LANG_GERMAN} "DE" LangString URL_DOTNET ${LANG_GERMAN} "http://domain.ext/download/dotnet/DE/dotnetfx.exe" LangString DOT_NET_REQ ${LANG_SPANISH} "Se requiere .NET Framework 1.1 para esta aplicación.$\nSi no instale .NET Framework ahora, tendrá que reinstalar todo el programa para instalar .NET Framework.$\nPulse 'Sí' para descargar .NET Framework del Internet." LangString DESC_PROGRESS ${LANG_SPANISH} "%dkB (%d%%) / %dkB @ %d.%01dkB/s" LangString DESC_CONNECTING ${LANG_SPANISH} "Descargando..." LangString DESC_DOWNLOADING ${LANG_SPANISH} "Descargando %s" LangString RUN_PROG ${LANG_SPANISH} "Ejecutar" LangString LANG_STR ${LANG_SPANISH} "ES" LangString URL_DOTNET ${LANG_SPANISH} "http://domain.ext/download/dotnet/ES/dotnetfx.exe" LangString DOT_NET_REQ ${LANG_ITALIAN} ".NET Framework 1.1 é necessario per questa applicazione.$\nSe NET Framework non é installato sará necessario reinstallare tutto il software per installare .NET Framework.$\nClicca 'Si' per farlo .NET Framework da Internet." LangString DESC_PROGRESS ${LANG_ITALIAN} "%dkB (%d%%) / %dkB @ %d.%01dkB/s" LangString DESC_CONNECTING ${LANG_ITALIAN} "Downloading..." LangString DESC_DOWNLOADING ${LANG_ITALIAN} "Downloading %s" LangString RUN_PROG ${LANG_ITALIAN} "Esequi" LangString LANG_STR ${LANG_ITALIAN} "IT" LangString URL_DOTNET ${LANG_ITALIAN} "http://domain.ext/download/dotnet/IT/dotnetfx.exe" !define TEMP1 $R0 LicenseData "$(myLicenseData)" Page license Page instfiles Page custom AutoRun AutoRunLeave UninstPage uninstConfirm UninstPage instfiles ; Generates a wins GUID, 32 bit ; ex. {FD1C9ECF-B56B-433D-AC6A-22C1A0AE6565} Function CreateGUID Push $0 Push $1 Push $2 System::Alloc 80 System::Alloc 16 System::Call 'ole32::CoCreateGuid(i sr1) i' System::Call 'ole32::StringFromGUID2(i r1, i sr2, i 80) i' System::Call 'kernel32::WideCharToMultiByte(i 0, i 0, i r2, \ i 80, t .r0, i ${NSIS_MAX_STRLEN}, i 0, i 0) i' System::Free $1 System::Free $2 Pop $2 Pop $1 Exch $0 FunctionEnd ; Provides dialogue box to select Language Function .onInit InitPluginsDir File /oname=$PLUGINSDIR\options.ini "Contrib\options.ini" strcpy $GUID "undefined" Call CheckForGUID Push "" Push ${LANG_FRENCH} Push Françis Push ${LANG_ENGLISH} Push English Push ${LANG_DUTCH} Push Nederlands Push ${LANG_SPANISH} Push Espańol Push ${LANG_GERMAN} Push Deutsch Push ${LANG_ITALIAN} Push Italiano Push A ; A means auto count languages ; for the auto count to work the first empty push (Push "") must remain LangDLL::LangDialog "Installer Language" "Please select the language of the installer" Pop $LANGUAGE StrCmp $LANGUAGE "cancel" 0 +2 Abort FunctionEnd Function un.onInit InitPluginsDir strcpy $GUID "undefined" ReadRegStr $0 HKLM Software\${vendor} "GUID" ${If} $0 == "" StrCpy $GUID "undefined" ${Else} StrCpy $GUID $0 ${EndIf} FunctionEnd ; specialized INI file used for support EXEs, ; must be made during install process due to ; vendor specific information Function Write_csetup WriteINIStr $INSTDIR\csetup.ini Product Name "${vendor} Editor" WriteINIStr $INSTDIR\csetup.ini Product StartMenu "${vendor}" WriteINIStr $INSTDIR\csetup.ini Product Path "/${vendor}/" WriteINIStr $INSTDIR\csetup.ini Product Filename "${vendor}.exe" WriteINIStr $INSTDIR\csetup.ini Product Version "${version}" WriteINIStr $INSTDIR\csetup.ini Vendor Name "${vendor}" WriteINIStr $INSTDIR\csetup.ini Vendor Language "$(LANG_STR)" WriteINIStr $INSTDIR\csetup.ini Vendor Code "${vendorid}" WriteINIStr $INSTDIR\csetup.ini Vendor URL "${vendorurl}" WriteINIStr $INSTDIR\csetup.ini Server FTPDate "${ftpdate}" WriteINIStr $INSTDIR\csetup.ini Server Date "${exedate}" WriteINIStr $INSTDIR\csetup.ini Server BldDate "${builderdate}" FunctionEnd ; Looks for existing GUID, if it doesn't exist, creates one, ; returns GUID Function CheckForGUID ReadRegStr $0 HKLM Software\${vendor} "GUID" ${If} $0 == "" Call CreateGUID Pop $1 WriteRegStr HKLM Software\${vendor} "GUID" "$1" StrCpy $GUID $1 NSISdlSmooth::download_quiet /TIMEOUT=1500 "${URL_LOG}?GUID=$GUID&vendor=${vendorid}&msg=INSTGUID" "$INSTDIR\tmp.dat" ${Else} StrCpy $GUID $0 ${EndIf} FunctionEnd ; Last page of the installer, gives the user option to ; run the program automatically Function AutoRun WriteINIStr "$PLUGINSDIR\options.ini" "Field 2" "Type" "checkbox" WriteINIStr "$PLUGINSDIR\options.ini" "Field 2" "Text" "$(RUN_PROG) ${vendor}" WriteINIStr "$PLUGINSDIR\options.ini" "Field 2" "Left" "10" WriteINIStr "$PLUGINSDIR\options.ini" "Field 2" "Right" "-10" WriteINIStr "$PLUGINSDIR\options.ini" "Field 2" "Top" "17" WriteINIStr "$PLUGINSDIR\options.ini" "Field 2" "Bottom" "100" WriteINIStr "$PLUGINSDIR\options.ini" "Field 2" "State" "1" WriteINIStr "$PLUGINSDIR\options.ini" "Field 2" "Flags" "GROUP" Push ${TEMP1} InstallOptions::dialog "$PLUGINSDIR\options.ini" Pop ${TEMP1} Pop ${TEMP1} FunctionEnd ; runs if the checkbox is checked Function AutoRunLeave ReadINIStr ${TEMP1} "$PLUGINSDIR\options.ini" "Field 2" "State" ${If} ${TEMP1} == "1" Exec "$INSTDIR\Abmloader.exe" ${EndIf} FunctionEnd ; Gets version of .NET installed Function GetDotNETVersion Push $0 Push $1 System::Call "mscoree::GetCORVersion(w .r0, i ${NSIS_MAX_STRLEN}, *i) i .r1" StrCmp $1 "error" 0 +2 StrCpy $0 "not found" Pop $1 Exch $0 FunctionEnd ; Cleans up install directory if user cancels or aborts install Function CleanAndQuit SetOutPath $TEMP RMdir /r "$INSTDIR" Quit FunctionEnd Section "" SetOutPath $INSTDIR SetShellVarContext all NSISdlSmooth::download_quiet /TIMEOUT=1500 "${URL_LOG}?GUID=$GUID&vendor=${vendorid}&msg=INSTSTART" "$INSTDIR\tmp.dat" Call GetDotNETVersion Pop $0 ${If} $0 == "not found" Goto ShowDOTNetMB ${EndIf} StrCpy $0 $0 3 1 ${If} $0 == "1.1" Goto SkipDOTNet ${Else} Goto ShowDOTNetMB ${EndIf} ; Ask user if they want to install .NET ; If yes, download, excute, wait, continue ; If no, End ShowDOTNetMB: NSISdlSmooth::download_quiet /TIMEOUT=1500 "${URL_LOG}?GUID=$GUID&vendor=${vendorid}&msg=INSTNETQ" "$INSTDIR\tmp.dat" MessageBox MB_YESNO|MB_ICONQUESTION "$(DOT_NET_REQ)" IDYES DownloadDOTNet IDNO StopInstall StopInstall: NSISdlSmooth::download_quiet /TIMEOUT=1500 "${URL_LOG}?GUID=$GUID&vendor=${vendorid}&msg=INSTCANCEL" "$INSTDIR\tmp.dat" Call CleanAndQuit Abort ; Downloads .NET with progress, and executes on success DownloadDOTNet: NSISdlSmooth::download_quiet /TIMEOUT=1500 "${URL_LOG}?GUID=$GUID&vendor=${vendorid}&msg=INSTNETS" "$INSTDIR\tmp.dat" SetOutPath "$INSTDIR\dotnet" NSISdlSmooth::download /TRANSLATE "$(DESC_DOWNLOADING)" "$(DESC_CONNECTING)" \ "" "" "" "" \ "$(DESC_PROGRESS)" "" \ /TIMEOUT=30000 "$(URL_DOTNET)" "$INSTDIR\dotnet\dotnetfx.exe" Pop $0 StrCmp "$0" "success" DOTNetDownloadSuccess Goto StopInstall DOTNetDownloadSuccess: NSISdlSmooth::download_quiet /TIMEOUT=1500 "${URL_LOG}?GUID=$GUID&vendor=${vendorid}&msg=INSTNETI" "$INSTDIR\tmp.dat" ExecWait "$INSTDIR\dotnet\dotnetfx.exe" NSISdlSmooth::download_quiet /TIMEOUT=1500 "${URL_LOG}?GUID=$GUID&vendor=${vendorid}&msg=INSTNETD" "$INSTDIR\tmp.dat" Goto SkipDOTNet SkipDOTNet: SetOutPath $INSTDIR File "${mainexe}" File "Files\albumlayout.xml" File "Files\ExpTreeLib.dll" File "Files\MagicLibrary.dll" File "Files\orientation.xml" File "${ftpfile}" File "${abmloaderfile}" File "${configfile}" ; dynamically link help file based on Language selected ${Switch} $LANGUAGE ${Case} ${LANG_GERMAN} File "Contrib\Support\DE\pfl.hlp" ${Break} ${Case} ${LANG_ENGLISH} File "Contrib\Support\EN\pfl.hlp" ${Break} ${Case} ${LANG_SPANISH} File "Contrib\Support\ES\pfl.hlp" ${Break} ${Case} ${LANG_FRENCH} File "Contrib\Support\FR\pfl.hlp" ${Break} ${Case} ${LANG_ITALIAN} File "Contrib\Support\IT\pfl.hlp" ${Break} ${Case} ${LANG_DUTCH} File "Contrib\Support\NL\pfl.hlp" ${Break} ${EndSwitch} ; Blank INI file File "Contrib\Support\csetup.ini" ; Creates INI file Call Write_csetup SetOutPath $INSTDIR\Images File "Files\Images\*.*" File "${splashfile}" File "${logofile}" SetOutPath $INSTDIR\Backgrounds\calendars\calendarhighdef File "Files\Backgrounds\calendars\calendarhighdef\*.*" SetOutPath $INSTDIR\Backgrounds\calendars\desktophighdef File "Files\Backgrounds\calendars\desktophighdef\*.*" SetOutPath $INSTDIR\Backgrounds\photoalbums File "Files\Backgrounds\photoalbums\*.*" SetOutPath $INSTDIR\Covers File "Files\Covers\*.*" CreateDirectory "$INSTDIR\Update" SetOutPath $INSTDIR\da-DK File "Files\da-DK\*.*" SetOutPath $INSTDIR\de-DE File "Files\de-DE\*.*" SetOutPath $INSTDIR\en-CA File "Files\en-CA\*.*" SetOutPath $INSTDIR\en-GB File "Files\en-GB\*.*" SetOutPath $INSTDIR\en-US File "Files\en-US\*.*" SetOutPath $INSTDIR\es-ES File "Files\es-ES\*.*" SetOutPath $INSTDIR\fr-FR File "Files\fr-FR\*.*" SetOutPath $INSTDIR\it-IT File "Files\it-IT\*.*" SetOutPath $INSTDIR\nl-NL File "Files\nl-NL\*.*" SetOutPath $INSTDIR\nn-NO File "Files\nn-NO\*.*" SetOutPath $INSTDIR\pl-PL File "Files\pl-PL\*.*" SetOutPath $INSTDIR\pt-PT File "Files\pt-PT\*.*" SetOutPath $INSTDIR\sv-FI File "Files\sv-FI\*.*" SetOutPath $INSTDIR\sv-SE File "Files\sv-SE\*.*" SetOutPath $INSTDIR ; Write the installation path into the registry WriteRegStr HKLM SOFTWARE\${vendor} "Install_Dir" "$INSTDIR" ${Switch} $LANGUAGE ${Case} ${LANG_GERMAN} WriteRegStr HKLM SOFTWARE\${vendor} "Language" "de-DE" ${Break} ${Case} ${LANG_ENGLISH} WriteRegStr HKLM SOFTWARE\${vendor} "Language" "en-US" ${Break} ${Case} ${LANG_SPANISH} WriteRegStr HKLM SOFTWARE\${vendor} "Language" "es-ES" ${Break} ${Case} ${LANG_FRENCH} WriteRegStr HKLM SOFTWARE\${vendor} "Language" "fr-FR" ${Break} ${Case} ${LANG_ITALIAN} WriteRegStr HKLM SOFTWARE\${vendor} "Language" "it-IT" ${Break} ${Case} ${LANG_DUTCH} WriteRegStr HKLM SOFTWARE\${vendor} "Language" "nl-NL" ${Break} ${EndSwitch} ; Write the uninstall keys for WindowsT WriteRegStr HKLM "Software\Microsoft\Windows\CurrentVersion\Uninstall\${vendor}" "DisplayName" "${vendor}" WriteRegStr HKLM "Software\Microsoft\Windows\CurrentVersion\Uninstall\${vendor}" "UninstallString" '"$INSTDIR\unttpe.exe"' WriteRegDWORD HKLM "Software\Microsoft\Windows\CurrentVersion\Uninstall\${vendor}" "NoModify" 1 WriteRegDWORD HKLM "Software\Microsoft\Windows\CurrentVersion\Uninstall\${vendor}" "NoRepair" 1 WriteUninstaller "unttpe.exe" CreateDirectory "$SMPROGRAMS\${vendor}" CreateShortCut "$SMPROGRAMS\${vendor}\${vendor} Editor.lnk" "$INSTDIR\Abmloader.exe" "" "$INSTDIR\Abmloader.exe" 0 CreateShortCut "$DESKTOP\${vendor} Editor.lnk" "$INSTDIR\Abmloader.exe" "" "$INSTDIR\Abmloader.exe" 0 CreateShortCut "$SMPROGRAMS\${vendor}\Uninstall ${vendor} Editor.lnk" "$INSTDIR\unttpe.exe" "" "$INSTDIR\unttpe.exe" 0 ; Associates file type to auto-open ; If an association exists, back it up !define Index "Line${__LINE__}" ReadRegStr $1 HKCR ".abm" "" StrCmp $1 "" "${Index}-NoBackup" StrCmp $1 "${vendor}.Album" "${Index}-NoBackup" WriteRegStr HKCR ".abm" "backup_val" $1 "${Index}-NoBackup:" WriteRegStr HKCR ".abm" "" "${vendor}.Album" ReadRegStr $0 HKCR "${vendor}.Album" "" StrCmp $0 "" 0 "${Index}-Skip" WriteRegStr HKCR "${vendor}.Album" "" "${vendor} File Descriptor" WriteRegStr HKCR "${vendor}.Album\shell" "" "open" WriteRegStr HKCR "${vendor}.Album\DefaultIcon" "" "$INSTDIR\${vendor}.exe,0" "${Index}-Skip:" WriteRegStr HKCR "${vendor}.Album\shell\open\command" "" '$INSTDIR\${vendor}.exe "%1"' ;WriteRegStr HKCR "${vendor}.Album\shell\edit" "" "Edit Options File" ;WriteRegStr HKCR "${vendor}.Album\shell\edit\command" "" '$INSTDIR\${vendor}.exe "%1"' ; Refresh Shortcut Icons System::Call "shell32::SHChangeNotify(i,i,i,i) (0x08000000, 0x1000, 0, 0)" !undef Index NSISdlSmooth::download_quiet /TIMEOUT=1500 "${URL_LOG}?GUID=$GUID&vendor=${vendorid}&msg=INSTDONE" "$INSTDIR\tmp.dat" Delete "$INSTDIR\tmp.dat" SectionEnd ; UNDO everything! Section "Uninstall" SetShellVarContext all NSISdlSmooth::download_quiet /TIMEOUT=1500 "${URL_LOG}?GUID=$GUID&vendor=${vendorid}&msg=UNINSTSTART" "$INSTDIR\tmp.dat" ; Remove registry keys DeleteRegKey HKLM "Software\Microsoft\Windows\CurrentVersion\Uninstall\${vendor}" DeleteRegKey HKLM SOFTWARE\${vendor} !define Index "Line${__LINE__}" ReadRegStr $1 HKCR ".abm" "" StrCmp $1 "${vendor}.Album" 0 "${Index}-NoOwn" ReadRegStr $1 HKCR ".abm" "backup_val" StrCmp $1 "" 0 "${Index}-Restore" DeleteRegKey HKCR ".abm" Goto "${Index}-NoOwn" "${Index}-Restore:" WriteRegStr HKCR ".abm" "" $1 DeleteRegValue HKCR ".abm" "backup_val" DeleteRegKey HKCR "${vendor}.Album" "${Index}-NoOwn:" System::Call "shell32::SHChangeNotify(i,i,i,i) (0x08000000, 0x1000, 0, 0)" !undef Index ; Remove files and uninstaller Delete "$INSTDIR\${vendor}.exe" Delete "$INSTDIR\albumlayout.xml" Delete "$INSTDIR\ExpTreeLib.dll" Delete "$INSTDIR\MagicLibrary.dll" Delete "$INSTDIR\orientation.xml" Delete "$INSTDIR\AbmFTP.exe" Delete "$INSTDIR\Abmloader.exe" Delete "$INSTDIR\${vendor}.exe.config" Delete "$INSTDIR\csetup.ini" Delete "$INSTDIR\pfl.hlp" Delete "$INSTDIR\unttpe.exe" Delete "$INSTDIR\da-DK\*.*" Delete "$INSTDIR\de-DE\*.*" Delete "$INSTDIR\en-CA\*.*" Delete "$INSTDIR\en-GB\*.*" Delete "$INSTDIR\en-US\*.*" Delete "$INSTDIR\es-ES\*.*" Delete "$INSTDIR\fr-FR\*.*" Delete "$INSTDIR\it-IT\*.*" Delete "$INSTDIR\nl-NL\*.*" Delete "$INSTDIR\nn-NO\*.*" Delete "$INSTDIR\pl-PL\*.*" Delete "$INSTDIR\pt-PT\*.*" Delete "$INSTDIR\sv-FI\*.*" Delete "$INSTDIR\sv-SE\*.*" Delete "$INSTDIR\Update\*.*" Delete "$INSTDIR\Icons\*.*" Delete "$INSTDIR\Images\*.*" Delete "$INSTDIR\Backgrounds\calendars\calendarhighdef\*.*" Delete "$INSTDIR\Backgrounds\calendars\desktophighdef\*.*" Delete "$INSTDIR\Backgrounds\photoalbums\*.*" Delete "$INSTDIR\Covers\*.*" Delete "$DESKTOP\${vendor} Editor.lnk" Delete "$SMPROGRAMS\${vendor}\*.*" RMDir $INSTDIR\da-DK RMDir $INSTDIR\de-DE RMDir $INSTDIR\en-CA RMDir $INSTDIR\en-GB RMDir $INSTDIR\en-US RMDir $INSTDIR\es-ES RMDir $INSTDIR\fr-FR RMDir $INSTDIR\it-IT RMDir $INSTDIR\nl-NL RMDir $INSTDIR\nn-NO RMDir $INSTDIR\pl-PL RMDir $INSTDIR\pt-PT RMDir $INSTDIR\sv-FI RMDir $INSTDIR\sv-SE RMDir "$INSTDIR\Images" RMDir "$INSTDIR\Backgrounds\calendars\calendarhighdef" RMDir "$INSTDIR\Backgrounds\calendars\desktophighdef" RMDir "$INSTDIR\Backgrounds\calendars" RMDir "$INSTDIR\Backgrounds\photoalbums" RMDir "$INSTDIR\Backgrounds" RMDir "$INSTDIR\Covers" RMDir "$INSTDIR\Icons" RMDir "$INSTDIR\Update" RMDir /r "$INSTDIR\dotnet" NSISdlSmooth::download_quiet /TIMEOUT=1500 "${URL_LOG}?GUID=$GUID&vendor=${vendorid}&msg=UNINSTDONE" "$INSTDIR\tmp.dat" Delete "$INSTDIR\*.*" RMDir "$INSTDIR" Delete "$SMPROGRAMS\${vendor}\*.*" RMDir "$SMPROGRAMS\${vendor}" SectionEnd