feat: ent ORM, admin UI, client auth, Fyne GUI, Windows/MSI packaging
This commit is contained in:
@@ -0,0 +1,148 @@
|
||||
; frpc Windows Installer (NSIS)
|
||||
; Build: makensis frpc.nsi
|
||||
; Requires: NSIS 3.x (https://nsis.sourceforge.io)
|
||||
|
||||
!define PRODUCT_NAME "frpc"
|
||||
!define PRODUCT_VERSION "0.62.0"
|
||||
!define PRODUCT_PUBLISHER "frp Contributors"
|
||||
!define PRODUCT_WEB_SITE "https://github.com/fatedier/frp"
|
||||
!define PRODUCT_DIR "$PROGRAMFILES64\${PRODUCT_NAME}"
|
||||
!define PRODUCT_UNINSTALL_KEY "Software\Microsoft\Windows\CurrentVersion\Uninstall\${PRODUCT_NAME}"
|
||||
|
||||
Name "${PRODUCT_NAME} ${PRODUCT_VERSION}"
|
||||
OutFile "..\..\bin\frpc-${PRODUCT_VERSION}-setup.exe"
|
||||
InstallDir "${PRODUCT_DIR}"
|
||||
InstallDirRegKey HKLM "${PRODUCT_UNINSTALL_KEY}" "InstallLocation"
|
||||
RequestExecutionLevel admin
|
||||
|
||||
SetCompressor lzma
|
||||
|
||||
; Pages (setup wizard)
|
||||
Page license
|
||||
Page components
|
||||
Page directory
|
||||
Page instfiles
|
||||
Page custom setFinishPage
|
||||
|
||||
; Uninstaller pages
|
||||
UninstPage uninstConfirm
|
||||
UninstPage instfiles
|
||||
|
||||
; License data
|
||||
LicenseData "..\..\packaging\windows\license.txt"
|
||||
|
||||
; Languages
|
||||
!insertmacro MUI_LANGUAGE "English"
|
||||
|
||||
; Include modern UI
|
||||
!include "MUI2.nsh"
|
||||
!include "FileFunc.nsh"
|
||||
!include "WinMessages.nsh"
|
||||
!include "LogicLib.nsh"
|
||||
|
||||
Var FinishPage
|
||||
Var RunNowCheckbox
|
||||
Var ShowReadmeCheckbox
|
||||
Var RunNowState
|
||||
Var ReadmeState
|
||||
|
||||
Function setFinishPage
|
||||
nsDialogs::Create 1018
|
||||
Pop $FinishPage
|
||||
|
||||
${NSD_CreateLabel} 0 0 100% 24 "Setup Complete"
|
||||
Pop $0
|
||||
|
||||
${NSD_CreateCheckbox} 0 30 100% 12 "Run frpc now"
|
||||
Pop $RunNowCheckbox
|
||||
${NSD_Check} $RunNowCheckbox
|
||||
|
||||
${NSD_CreateCheckbox} 0 46 100% 12 "Open config directory"
|
||||
Pop $ShowReadmeCheckbox
|
||||
|
||||
nsDialogs::Show
|
||||
FunctionEnd
|
||||
|
||||
Function .onGUIEnd
|
||||
${NSD_GetState} $RunNowCheckbox $RunNowState
|
||||
${NSD_GetState} $ShowReadmeCheckbox $ReadmeState
|
||||
|
||||
${If} $RunNowState == ${BST_CHECKED}
|
||||
ExecShell "open" "$INSTDIR\frpc.exe"
|
||||
${EndIf}
|
||||
|
||||
${If} $ReadmeState == ${BST_CHECKED}
|
||||
ExecShell "open" "$PROGRAMDATA\frpc"
|
||||
${EndIf}
|
||||
FunctionEnd
|
||||
|
||||
Section "frpc (required)" SEC_FRPC
|
||||
SectionIn RO
|
||||
SetOutPath "$INSTDIR"
|
||||
File "..\..\bin\frpc-windows-amd64.exe"
|
||||
Rename "$INSTDIR\frpc-windows-amd64.exe" "$INSTDIR\frpc.exe"
|
||||
|
||||
; Config directory
|
||||
CreateDirectory "$PROGRAMDATA\frpc"
|
||||
SetOutPath "$PROGRAMDATA\frpc"
|
||||
File "/oname=frpc.toml" "..\..\packaging\windows\frpc.default.toml"
|
||||
|
||||
WriteUninstaller "$INSTDIR\uninstall.exe"
|
||||
|
||||
; Registry for uninstaller
|
||||
WriteRegStr HKLM "${PRODUCT_UNINSTALL_KEY}" "DisplayName" "${PRODUCT_NAME}"
|
||||
WriteRegStr HKLM "${PRODUCT_UNINSTALL_KEY}" "UninstallString" "$INSTDIR\uninstall.exe"
|
||||
WriteRegStr HKLM "${PRODUCT_UNINSTALL_KEY}" "DisplayVersion" "${PRODUCT_VERSION}"
|
||||
WriteRegStr HKLM "${PRODUCT_UNINSTALL_KEY}" "Publisher" "${PRODUCT_PUBLISHER}"
|
||||
WriteRegStr HKLM "${PRODUCT_UNINSTALL_KEY}" "URLInfoAbout" "${PRODUCT_WEB_SITE}"
|
||||
WriteRegStr HKLM "${PRODUCT_UNINSTALL_KEY}" "DisplayIcon" "$INSTDIR\frpc.exe,0"
|
||||
WriteRegStr HKLM "${PRODUCT_UNINSTALL_KEY}" "InstallLocation" "$INSTDIR"
|
||||
WriteRegDWORD HKLM "${PRODUCT_UNINSTALL_KEY}" "NoModify" 1
|
||||
WriteRegDWORD HKLM "${PRODUCT_UNINSTALL_KEY}" "NoRepair" 1
|
||||
SectionEnd
|
||||
|
||||
Section "Start Menu Shortcuts" SEC_SHORTCUTS
|
||||
CreateDirectory "$SMPROGRAMS\${PRODUCT_NAME}"
|
||||
CreateShortCut "$SMPROGRAMS\${PRODUCT_NAME}\frpc.lnk" "$INSTDIR\frpc.exe" "" "$INSTDIR\frpc.exe" 0
|
||||
CreateShortCut "$SMPROGRAMS\${PRODUCT_NAME}\Config Directory.lnk" "$PROGRAMDATA\frpc"
|
||||
CreateShortCut "$SMPROGRAMS\${PRODUCT_NAME}\Uninstall.lnk" "$INSTDIR\uninstall.exe"
|
||||
SectionEnd
|
||||
|
||||
Section "Add to PATH" SEC_PATH
|
||||
EnVar::AddValue "PATH" "$INSTDIR"
|
||||
Pop $0
|
||||
SectionEnd
|
||||
|
||||
Section "Desktop Shortcut" SEC_DESKTOP
|
||||
CreateShortCut "$DESKTOP\frpc.lnk" "$INSTDIR\frpc.exe" "" "$INSTDIR\frpc.exe" 0
|
||||
SectionEnd
|
||||
|
||||
; Descriptions
|
||||
LangString DESC_SEC_FRPC ${LANG_ENGLISH} "frpc binary and default configuration."
|
||||
LangString DESC_SEC_SHORTCUTS ${LANG_ENGLISH} "Start menu shortcuts for frpc."
|
||||
LangString DESC_SEC_PATH ${LANG_ENGLISH} "Add frpc installation directory to system PATH."
|
||||
LangString DESC_SEC_DESKTOP ${LANG_ENGLISH} "Create a desktop shortcut for frpc."
|
||||
|
||||
!insertmacro MUI_FUNCTION_DESCRIPTION_BEGIN
|
||||
!insertmacro MUI_DESCRIPTION_TEXT ${SEC_FRPC} $(DESC_SEC_FRPC)
|
||||
!insertmacro MUI_DESCRIPTION_TEXT ${SEC_SHORTCUTS} $(DESC_SEC_SHORTCUTS)
|
||||
!insertmacro MUI_DESCRIPTION_TEXT ${SEC_PATH} $(DESC_SEC_PATH)
|
||||
!insertmacro MUI_DESCRIPTION_TEXT ${SEC_DESKTOP} $(DESC_SEC_DESKTOP)
|
||||
!insertmacro MUI_FUNCTION_DESCRIPTION_END
|
||||
|
||||
Section "Uninstall"
|
||||
Delete "$INSTDIR\frpc.exe"
|
||||
Delete "$INSTDIR\uninstall.exe"
|
||||
RMDir "$INSTDIR"
|
||||
|
||||
Delete "$SMPROGRAMS\${PRODUCT_NAME}\frpc.lnk"
|
||||
Delete "$SMPROGRAMS\${PRODUCT_NAME}\Config Directory.lnk"
|
||||
Delete "$SMPROGRAMS\${PRODUCT_NAME}\Uninstall.lnk"
|
||||
RMDir "$SMPROGRAMS\${PRODUCT_NAME}"
|
||||
|
||||
Delete "$DESKTOP\frpc.lnk"
|
||||
|
||||
EnVar::DeleteValue "PATH" "$INSTDIR"
|
||||
|
||||
DeleteRegKey HKLM "${PRODUCT_UNINSTALL_KEY}"
|
||||
SectionEnd
|
||||
Reference in New Issue
Block a user