Pythontr

husonet | Tarih: 29.12.2017

c# Setup Oluşturma

Kurulum programı nasıl oluşturulur, setup oluşturma işlemini NSIS üzerinden sizler için anlattık.

VCL daha doğrusu masaüstü yazılımlarımız için kolay kurulum işleminin nasıl yapılacağını sizler için aşağıda detaylı bir şekilde açıklamaya çalışalım. Biz setup oluşturma işlemi için open source bir uygulama olan NSIS kullanacağız.


NSIS nedir?


NSIS (Nullsoft Scriptable Install System), Windows işletim sistemleri için kolay kurulum exeleri oluşturmak için sık tercih edilen profesyonel açık kaynaklı bir uygulamadır. Mümkün olduğunca küçük ve esnek olacak şekilde tasarlanmıştır, bu nedenle internet dağıtımı için çok uygundur.


Son kullanıcının ürününüzle ilgili ilk deneyimi kolay kurulum işlemidir. Bu setup oluşturma işlemi istikrarlı ve güvenilir olmalıdır, bunlar başarılı yazılımın önemli bir bileşenidir. NSIS ile yazılımınızı kurmak için gereken her şeyi yapabilen uygulama kurulumları oluşturabilirsiniz.


NSIS, betik tabanlıdır ve en kompleks kurulum görevlerini bile işlemek için mantık oluşturmanıza izin verir. Birçok eklenti ve komut dosyası zaten mevcuttur: Web yükleyicileri oluşturabilir, Windows ve diğer yazılım bileşenleri ile iletişim kurabilir, paylaşılan bileşenleri yükleyebilir veya güncelleştirebilirsiniz. Biz örneğimizde c# programı ile yazdığımız bir uygulamanın setup oluşturmasını işleyeceğiz.


NSIS Section blokları kurulum yapılacak uygulama dosya bloklarıdır bu dosyalar birden fazla olabilir, dosya tiplerinde herhangi bir sınırlama yoktur örnek exe, dll yada resim dosyaları olabilir.


Kurulum ekranlarının özelleştirilmesi.
  • Page components kurulacak Section secim ekranını getirir.
  • Page directory kurulacak uygulamaların pathini belirler
  • Page instfiles yüklenen dosyaların gösterimini saplar.

SectionIn RO, kuruluma zorlama işlemi yapar custom moduna girmez mutlaka kurulumunu yapar. Section 1 ise InstType lardaki index 1 olana işaret eder bu örneğimizde component seçiminde mevcut ise kurulum yaptırır.


Kullanıcıların kurulum aşamasında yönlendirilmesi

Kullanıcıların seçimleri doğrultusunda kurulum işlemini yönlendirebiliriz. Aşağıdaki örneğimizde oracle dosyaları kopyalandıktan sonra oracle setup.exe dosyasının çalışsın mı sorusunu kullanıcının kararırına bırakmaktadır.


Section "Oracle Kolay Kurulum" ORACLEIDX

SectionIn 1

; Oracle Kurulumu
SetOutPath "$INSTDIR\oracle"
File /r "D:\Araclar\Oracle 11g Client Win 7\client"

SearchPath $1 $INSTDIR\oracle\client\setup.exe

; MessageBox MB_OK "$INSTDIR\oracle\client\setup.exe=$1"
MessageBox MB_YESNO "Do you want to continue to set up process for Oracle?" IDYES true IDNO false
true:
Exec '"$1"'
ExecShell "open" '"$INSTDIR"'
Sleep 500
BringToFront
false:
Abort
SectionEnd

Tek bir dosya yerine komple dizinin kopyalanması için aşağıdaki şekilde bir kullanım yapabiliriz.


File /r "D:\Araclar\Oracle 11g Client Win 7\client"

Kısayol oluşturulması
CreateShortCut "$DESKTOP\ornek.lnk" "$INSTDIR\ornek.exe" "" "$INSTDIR\ornek.exe" 0

NSIS bir çok konuda oldukça başarılı örneğimizde yer vermedik ama Dialog pencereleri oluşturabilir, Windows Registiry işlemlerinden tutun ini dosyalarının oluşturulmasına kadar benzer bir çok şeyi yapabilirsiniz.


Örnek oluşturması açısında aşağıdaki scriptin üzerinde çalışabilirsiniz.


!define MUI_PRODUCT "Ornek Uygulama Kolay Kurulum"
!define MUI_FILE "ornek.exe"
!define MUI_VERSION "1.0"
!define MUI_BRANDINGTEST "Ornek Uygulama Kolay Kurulum"

!ifdef NOCOMPRESS
SetCompress off
!endif

;--------------------------------

Name "Ornek Uygulama"
Caption "Ornek Uygulama Instalation"
;Icon: "C:\Program Files (x86)\NSIS\Contrib\Graphics\Icons\nsis1-install.ico"
OutFile "orneksetup.exe"

InstallDir "c:\ornek\"


RequestExecutionLevel admin

; Pages

Page components
Page directory
Page instfiles

;--------------------------------

!ifndef NOINSTTYPES ; only if not defined
;InstType "Most"
InstType "Full"
;InstType "More"
;InstType "Base"
InstType "Minimal"
;InstType /NOCUSTOM
;InstType /COMPONENTSONLYONCUSTOM
!endif

Section "Ornek Uygulama Kolay Kurulum"
SectionIn RO

SetOutPath $INSTDIR

; ornek uygulama
File "c:\ornek\Win32\Debug\ornek.exe"

CreateShortCut "$DESKTOP\ornek.lnk" "$INSTDIR\ornek.exe" "" "$INSTDIR\ornek.exe" 0

SectionEnd

Section "Teamviewer Kolay Kurulum" TEAMIDX
SectionIn 1

SetOutPath $INSTDIR

; Teamviewer
File "d:\Araclar\teamviewer.exe"

CreateShortCut "$DESKTOP\BoranTW.lnk" "$INSTDIR\teamviewer.exe" "" "$INSTDIR\teamviewer.exe" 0
SectionEnd

Section "Oracle Kolay Kurulum" ORACLEIDX

SectionIn 1

; Oracle Kurulumu
SetOutPath "$INSTDIR\oracle"
File /r "D:\Araclar\Oracle 11g Client Win 7\client"

SearchPath $1 $INSTDIR\oracle\client\setup.exe

; MessageBox MB_OK "$INSTDIR\oracle\client\setup.exe=$1"
MessageBox MB_YESNO "Do you want to continue to set up process for Oracle?" IDYES true IDNO false
true:
Exec '"$1"'
ExecShell "open" '"$INSTDIR"'
Sleep 500
BringToFront
false:
Abort
SectionEnd

Function .onSelChange

SectionSetText ${TEAMIDX} "Boran Teamviewer Kolay Kurulum"
SectionSetText ${ORACLEIDX} "Oracle Kolay Kurulum"


; SectionGetText ${ORACLEIDX} $0
; StrCmp $0 "" e
; SectionSetText ${ORACLEIDX} ""
; Goto e2
;e:
; SectionSetText ${ORACLEIDX} "Oracle Kolay Kurulum"
;e2:
FunctionEnd

Kaynak http://nsis.sourceforge.net/Main_Page