0% found this document useful (0 votes)
15 views4 pages

Yeni Metin Belgesi

This document is a script for creating an installer using NSIS, which supports both normal and portable installation modes for an application named 'foobarbaz'. It includes sections for setting installation paths, creating an uninstaller, and handling user input for installation preferences. The script also manages registry entries and file operations based on the selected installation mode.

Uploaded by

malirik0004
Copyright
© © All Rights Reserved
We take content rights seriously. If you suspect this is your content, claim it here.
Available Formats
Download as TXT, PDF, TXT or read online on Scribd
0% found this document useful (0 votes)
15 views4 pages

Yeni Metin Belgesi

This document is a script for creating an installer using NSIS, which supports both normal and portable installation modes for an application named 'foobarbaz'. It includes sections for setting installation paths, creating an uninstaller, and handling user input for installation preferences. The script also manages registry entries and file operations based on the selected installation mode.

Uploaded by

malirik0004
Copyright
© © All Rights Reserved
We take content rights seriously. If you suspect this is your content, claim it here.
Available Formats
Download as TXT, PDF, TXT or read online on Scribd
You are on page 1/ 4

!include LogicLib.

nsh
!include FileFunc.nsh
!include Sections.nsh

Section
SetOutPath "$InstDir"
;File "source\myapp.exe"
SectionEnd

Section "" SID_CREATEUNINSTALLER


WriteRegStr HKLM "Software\Microsoft\Windows\CurrentVersion\Uninstall\${UNINSTKEY}"
"DisplayName" "${NAME}"
WriteRegStr HKLM "Software\Microsoft\Windows\CurrentVersion\Uninstall\${UNINSTKEY}"
"UninstallString" '"$INSTDIR\uninstall.exe"'
WriteUninstaller "$INSTDIR\uninstall.exe"
SectionEnd

Section Uninstall
;...
SectionEnd

Function .onInit
${GetParameters} $9
ClearErrors
${GetOptions} $9 "/PORTABLE" $8
${IfNot} ${Errors}
SetSilent silent
${If} $InstDir == ""
StrCpy $InstDir "$Desktop\${NAME}"
${EndIf}
!insertmacro UnselectSection ${SID_CREATEUNINSTALLER}
SetOutPath $InstDir
WriteIniStr "$InstDir\Config.ini" "Install" "Portable" "yes" ; Mark as portable
install
${EndIf}
FunctionEnd

--------------------------------------------------------
!define NAME "foobarbaz"
!define UNINSTKEY "${NAME}" ; Using a GUID here is not a bad idea
!define DEFAULTNORMALDESTINATON "$ProgramFiles\${NAME}"
!define DEFAULTPORTABLEDESTINATON "$Desktop\${NAME}"
Name "${NAME}"
Outfile "${NAME} setup.exe"
RequestExecutionlevel highest
SetCompressor LZMA

Var NormalDestDir
Var PortableDestDir
Var PortableMode

!include LogicLib.nsh
!include FileFunc.nsh
!include MUI2.nsh

!insertmacro MUI_PAGE_WELCOME
Page Custom PortableModePageCreate PortableModePageLeave
!insertmacro MUI_PAGE_DIRECTORY
!insertmacro MUI_PAGE_INSTFILES
!insertmacro MUI_PAGE_FINISH
!insertmacro MUI_LANGUAGE English

Function .onInit
StrCpy $NormalDestDir "${DEFAULTNORMALDESTINATON}"
StrCpy $PortableDestDir "${DEFAULTPORTABLEDESTINATON}"

${GetParameters} $9

ClearErrors
${GetOptions} $9 "/?" $8
${IfNot} ${Errors}
MessageBox MB_ICONINFORMATION|MB_SETFOREGROUND "\
/PORTABLE : Extract application to USB drive etc$\n\
/S : Silent install$\n\
/D=%directory% : Specify destination directory$\n"
Quit
${EndIf}

ClearErrors
${GetOptions} $9 "/PORTABLE" $8
${IfNot} ${Errors}
StrCpy $PortableMode 1
StrCpy $0 $PortableDestDir
${Else}
StrCpy $PortableMode 0
StrCpy $0 $NormalDestDir
${If} ${Silent}
Call RequireAdmin
${EndIf}
${EndIf}

${If} $InstDir == ""


; User did not use /D to specify a directory,
; we need to set a default based on the install mode
StrCpy $InstDir $0
${EndIf}
Call SetModeDestinationFromInstdir
FunctionEnd

Function RequireAdmin
UserInfo::GetAccountType
Pop $8
${If} $8 != "admin"
MessageBox MB_ICONSTOP "You need administrator rights to install ${NAME}"
SetErrorLevel 740 ;ERROR_ELEVATION_REQUIRED
Abort
${EndIf}
FunctionEnd

Function SetModeDestinationFromInstdir
${If} $PortableMode = 0
StrCpy $NormalDestDir $InstDir
${Else}
StrCpy $PortableDestDir $InstDir
${EndIf}
FunctionEnd

Function PortableModePageCreate
Call SetModeDestinationFromInstdir ; If the user clicks BACK on the directory page
we will remember their mode specific directory
!insertmacro MUI_HEADER_TEXT "Install Mode" "Choose how you want to install $
{NAME}."
nsDialogs::Create 1018
Pop $0
${NSD_CreateLabel} 0 10u 100% 24u "Select install mode:"
Pop $0
${NSD_CreateRadioButton} 30u 50u -30u 8u "Normal install"
Pop $1
${NSD_CreateRadioButton} 30u 70u -30u 8u "Portable"
Pop $2
${If} $PortableMode = 0
SendMessage $1 ${BM_SETCHECK} ${BST_CHECKED} 0
${Else}
SendMessage $2 ${BM_SETCHECK} ${BST_CHECKED} 0
${EndIf}
nsDialogs::Show
FunctionEnd

Function PortableModePageLeave
${NSD_GetState} $1 $0
${If} $0 <> ${BST_UNCHECKED}
StrCpy $PortableMode 0
StrCpy $InstDir $NormalDestDir
Call RequireAdmin
${Else}
StrCpy $PortableMode 1
StrCpy $InstDir $PortableDestDir
${EndIf}
FunctionEnd

Section
SetOutPath "$InstDir"
;File "source\myapp.exe"

${If} $PortableMode = 0
WriteRegStr HKLM "Software\Microsoft\Windows\CurrentVersion\Uninstall\$
{UNINSTKEY}" "DisplayName" "${NAME}"
WriteRegStr HKLM "Software\Microsoft\Windows\CurrentVersion\Uninstall\$
{UNINSTKEY}" "UninstallString" '"$INSTDIR\uninstall.exe"'
WriteUninstaller "$INSTDIR\uninstall.exe"
${Else}
; Create the file the application uses to detect portable mode
FileOpen $0 "$INSTDIR\portable.dat" w
FileWrite $0 "PORTABLE"
FileClose $0
${EndIf}
SectionEnd

Section Uninstall
DeleteRegKey HKLM "Software\Microsoft\Windows\CurrentVersion\Uninstall\$
{UNINSTKEY}"
Delete "$INSTDIR\uninstall.exe"
;Delete "$INSTDIR\myapp.exe"
RMDir "$InstDir"
SectionEnd
-------------------------------------
; NSIS Portable Kurulum Betiği
!include "MUI2.nsh"

OutFile "PortableApp.exe"
InstallDir "$EXEDIR\PortableApp" ; Portable dizini belirle

Page InstFiles

Section "Taşınabilir Uygulama"


SetOutPath "$INSTDIR"
File /r "UygulamaDosyalarım\*" ; Tüm uygulama dosyalarını kopyala
SectionEnd

Function .onInit
; Taşınabilir uygulamanın ayar dizinini oluştur
IfFileExists "$INSTDIR\data" "" createDataFolder
createDataFolder:
CreateDirectory "$INSTDIR\data"
FunctionEnd

Section -PostInstall
MessageBox MB_OK "Taşınabilir uygulama hazır!"
SectionEnd

You might also like

pFad - Phonifier reborn

Pfad - The Proxy pFad of © 2024 Garber Painting. All rights reserved.

Note: This service is not intended for secure transactions such as banking, social media, email, or purchasing. Use at your own risk. We assume no liability whatsoever for broken pages.


Alternative Proxies:

Alternative Proxy

pFad Proxy

pFad v3 Proxy

pFad v4 Proxy