mirror of
https://gitcode.com/JianFeeeee/homeagent-sdk.git
synced 2026-09-20 08:58:03 +00:00
- 目录 tools/plugindev → tools/hmapdev,可执行文件名/平台产物名同步
(hmapdev_linux_amd64 等;包格式仍叫 .hmap)
- module path github.com/JianFeeeee/homeagent-sdk/tools/... → gitcode.com/...
(与仓库实际托管一致;核心仓不依赖该 path,改动无外部影响)
- SDK 存储目录 ~/.homeagent/plugindev/sdk → ~/.homeagent/hmapdev/sdk
新目录不存在而旧目录存在时沿用旧目录 → 已装 SDK 版本不会丢失
- 命令表/usage/--help/生成项目 README/示例 README/NSIS 安装器/
package/build.sh/build-examples.sh 全部同步;PLUGINDEV 环境变量保留兼容
- sdk/ 目录零改动(公开接口不变)
验证:
- go build ./... ok;go test ./tools/hmapdev/ ok(含模板接线守卫 TestProcTemplate_CoversAllCoreMethods)
- bash -n package/{build,build-examples}.sh ok
- 端到端:hmapdev init demo && hmapdev build → dist/demo_bundle.hmap(linux+darwin)
- 本机安装 /usr/local/bin/hmapdev,旧名以软链保留;sdk list/current 正常
138 lines
4.9 KiB
NSIS
138 lines
4.9 KiB
NSIS
!include "MUI2.nsh"
|
||
!include "nsDialogs.nsh"
|
||
!include "LogicLib.nsh"
|
||
!include "x64.nsh"
|
||
!include "WinVer.nsh"
|
||
|
||
!define PRODUCT_NAME "HomeAgent Toolchain"
|
||
!define PRODUCT_PUBLISHER "HomeAgent Team"
|
||
!define PRODUCT_VERSION "0.7.1"
|
||
!define PRODUCT_DISPLAY_NAME "HomeAgent 工具链"
|
||
!define OUTPUT_FILE "HomeAgent_v${PRODUCT_VERSION}_Toolchain_win64.exe"
|
||
!define SDK_VERSION "v0.7.1"
|
||
|
||
Name "${PRODUCT_DISPLAY_NAME} v${PRODUCT_VERSION}"
|
||
OutFile "${OUTPUT_FILE}"
|
||
InstallDir "$PROGRAMFILES64\${PRODUCT_NAME}"
|
||
InstallDirRegKey HKLM "Software\${PRODUCT_NAME}" ""
|
||
RequestExecutionLevel admin
|
||
BrandingText "HomeAgent Toolchain Installer"
|
||
SetCompressor /SOLID lzma
|
||
ShowInstDetails show
|
||
ShowUninstDetails show
|
||
|
||
Var hasGit
|
||
Var sdkInstallOk
|
||
|
||
!insertmacro MUI_PAGE_WELCOME
|
||
!insertmacro MUI_PAGE_DIRECTORY
|
||
Page custom pageConfirm pageConfirmLeave
|
||
!insertmacro MUI_PAGE_INSTFILES
|
||
!insertmacro MUI_PAGE_FINISH
|
||
|
||
!insertmacro MUI_LANGUAGE "SimpChinese"
|
||
!insertmacro MUI_LANGUAGE "English"
|
||
|
||
Function .onInit
|
||
!insertmacro MUI_LANGDLL_DISPLAY
|
||
StrCpy $hasGit "0"
|
||
StrCpy $sdkInstallOk "0"
|
||
FunctionEnd
|
||
|
||
Function pageConfirm
|
||
!insertmacro MUI_HEADER_TEXT "确认安装" "将安装 HomeAgent 工具链并自动下载 SDK ${SDK_VERSION}"
|
||
nsDialogs::Create 1018
|
||
Pop $0
|
||
${If} $0 == error
|
||
Abort
|
||
${EndIf}
|
||
${NSD_CreateLabel} 0 5u 100% 12u "将安装以下组件:"
|
||
Pop $0
|
||
${NSD_CreateLabel} 15u 20u 100% 12u "• hmapdev.exe — 插件开发工具"
|
||
Pop $0
|
||
${NSD_CreateLabel} 15u 35u 100% 12u "• SDK ${SDK_VERSION} — 将从远程仓库自动下载"
|
||
Pop $0
|
||
${NSD_CreateLabel} 0 60u 100% 20u "SDK 需要 Git 客户端。如果未安装 Git,请先安装:$\r$\nhttps://git-scm.com/downloads"
|
||
Pop $0
|
||
nsDialogs::Show
|
||
FunctionEnd
|
||
|
||
Function pageConfirmLeave
|
||
FunctionEnd
|
||
|
||
Section "Install" SEC_INSTALL
|
||
SetOutPath "$INSTDIR"
|
||
|
||
DetailPrint "复制工具链文件..."
|
||
File "hmapdev.exe"
|
||
|
||
DetailPrint "创建快捷方式..."
|
||
CreateDirectory "$SMPROGRAMS\${PRODUCT_NAME}"
|
||
CreateShortCut "$SMPROGRAMS\${PRODUCT_NAME}\hmapdev.lnk" "$INSTDIR\hmapdev.exe" "" "$INSTDIR\hmapdev.exe" 0
|
||
|
||
DetailPrint "配置环境变量..."
|
||
; Add to system PATH
|
||
ReadRegStr $0 HKLM "SYSTEM\CurrentControlSet\Control\Session Manager\Environment" "PATH"
|
||
${If} $0 != ""
|
||
${If} $0 != "*$INSTDIR*"
|
||
StrCpy $0 "$0;$INSTDIR"
|
||
WriteRegStr HKLM "SYSTEM\CurrentControlSet\Control\Session Manager\Environment" "PATH" $0
|
||
${EndIf}
|
||
${Else}
|
||
WriteRegStr HKLM "SYSTEM\CurrentControlSet\Control\Session Manager\Environment" "PATH" "$INSTDIR"
|
||
${EndIf}
|
||
WriteRegStr HKLM "SYSTEM\CurrentControlSet\Control\Session Manager\Environment" "HOMEAGENT_SDK_DIR" "$INSTDIR\sdk"
|
||
WriteRegStr HKLM "Software\${PRODUCT_NAME}" "" "$INSTDIR"
|
||
|
||
DetailPrint "检测 Git 客户端..."
|
||
nsExec::ExecToStack '"git" --version'
|
||
Pop $0
|
||
Pop $1
|
||
${If} $0 == 0
|
||
StrCpy $hasGit "1"
|
||
DetailPrint "Git 已安装: $1"
|
||
${Else}
|
||
DetailPrint "未检测到 Git,将跳过 SDK 自动下载"
|
||
DetailPrint "安装完成后请手动运行: hmapdev sdk install ${SDK_VERSION}"
|
||
${EndIf}
|
||
|
||
${If} $hasGit == "1"
|
||
DetailPrint "正在下载 SDK ${SDK_VERSION}..."
|
||
nsExec::ExecToStack '"$INSTDIR\hmapdev.exe" sdk install ${SDK_VERSION}'
|
||
Pop $0
|
||
Pop $1
|
||
${If} $0 == 0
|
||
StrCpy $sdkInstallOk "1"
|
||
DetailPrint "SDK ${SDK_VERSION} 下载完成"
|
||
DetailPrint "正在激活 SDK ${SDK_VERSION}..."
|
||
nsExec::Exec '"$INSTDIR\hmapdev.exe" sdk use ${SDK_VERSION}'
|
||
Pop $0
|
||
${Else}
|
||
DetailPrint "SDK 下载失败 (错误码: $0)"
|
||
DetailPrint "请手动运行: hmapdev sdk install ${SDK_VERSION}"
|
||
${EndIf}
|
||
${EndIf}
|
||
|
||
WriteRegStr HKLM "Software\Microsoft\Windows\CurrentVersion\Uninstall\${PRODUCT_NAME}" "DisplayName" "${PRODUCT_DISPLAY_NAME} v${PRODUCT_VERSION}"
|
||
WriteRegStr HKLM "Software\Microsoft\Windows\CurrentVersion\Uninstall\${PRODUCT_NAME}" "UninstallString" "$INSTDIR\Uninstall.exe"
|
||
WriteRegStr HKLM "Software\Microsoft\Windows\CurrentVersion\Uninstall\${PRODUCT_NAME}" "InstallLocation" "$INSTDIR"
|
||
WriteRegStr HKLM "Software\Microsoft\Windows\CurrentVersion\Uninstall\${PRODUCT_NAME}" "Publisher" "${PRODUCT_PUBLISHER}"
|
||
WriteRegStr HKLM "Software\Microsoft\Windows\CurrentVersion\Uninstall\${PRODUCT_NAME}" "DisplayVersion" "${PRODUCT_VERSION}"
|
||
WriteRegDWORD HKLM "Software\Microsoft\Windows\CurrentVersion\Uninstall\${PRODUCT_NAME}" "NoModify" 1
|
||
WriteRegDWORD HKLM "Software\Microsoft\Windows\CurrentVersion\Uninstall\${PRODUCT_NAME}" "NoRepair" 1
|
||
|
||
WriteUninstaller "$INSTDIR\Uninstall.exe"
|
||
SectionEnd
|
||
|
||
Section "Uninstall"
|
||
Delete "$INSTDIR\Uninstall.exe"
|
||
Delete "$INSTDIR\hmapdev.exe"
|
||
RMDir /r "$INSTDIR\sdk"
|
||
RMDir "$INSTDIR"
|
||
Delete "$SMPROGRAMS\${PRODUCT_NAME}\hmapdev.lnk"
|
||
RMDir "$SMPROGRAMS\${PRODUCT_NAME}"
|
||
DeleteRegValue HKLM "SYSTEM\CurrentControlSet\Control\Session Manager\Environment" "HOMEAGENT_SDK_DIR"
|
||
DeleteRegKey HKLM "Software\Microsoft\CurrentVersion\Uninstall\${PRODUCT_NAME}"
|
||
DeleteRegKey HKLM "Software\${PRODUCT_NAME}"
|
||
SectionEnd
|