无忧启动论坛

标题: 通用一键U盘PE安装器脚本源码及教程--开源大礼(已发布至3个)★★★★★ [打印本页]

作者: teasiu    时间: 2011-4-10 01:33
标题: 通用一键U盘PE安装器脚本源码及教程--开源大礼(已发布至3个)★★★★★
本帖最后由 2010teasiu 于 2013-4-18 17:24 编辑

我写了很多的U盘启动安装软件,包括系统安装,系统维护安装的工具,受到网友大量下载和关注。

今天将其中一个最满意的作品源码公开,


帮助更多的的爱好者可以自己制作属于你自己的第一个软件。

通用一键U盘PE安装器 PE2USB.exe源码





教程很简单,我都在源码里加了注析,一看就懂,一学就会

首先您下载一个NSIS编译器中文版,
推荐下载吧的 Nullsoft Scriptable Install System(nsis定制安装程序)V2.45汉化增强版
http://www.xiazaiba.com/html/177.html

然后安装,然后下载附件我写的源码和资源约800k,然后按下图对着nsi文件右键编译就可以生成exe安装器。

然后你慢慢修改自己喜欢的名字和图标,制作属于自己的软件吧!




  1. ##神雕teasiu开源大礼,作者 teasiu@163.com
  2. ##让菜鸟都可以制作自己的软件
  3. ##您可以任意修改本代码,但是请保留原作者信息。
  4. ##
  5. !define NAME "PE2USB"
  6. !define DISTRO "WINPE"
  7. !define FILENAME "PE2USB"
  8. !define VERSION "0.1"
  9. !define MUI_ICON "usb48.ico"
  10. RequestExecutionLevel highest ;设置用户最高权限
  11. SetCompressor LZMA ;压缩格式
  12. CRCCheck On
  13. XPStyle on ;如果xp系统使用时,适应xp的风格
  14. ShowInstDetails show
  15. BrandingText "USBPE通用安装器 神雕teasiu作品"
  16. CompletedText "安装结束,欢迎使用和收藏本工具! --神雕teasiu"
  17. InstallButtonText "创 建" ;将先一步按钮改名为创建
  18. Name "${NAME} ${VERSION}"
  19. OutFile "${FILENAME} ${VERSION}.exe" ;生成的exe文件名
  20. !include "nsDialogs.nsh"
  21. !include "MUI2.nsh"
  22. !include "FileFunc.nsh"
  23. !include "WordFunc.nsh" ;磁盘列表
  24. ; 页面头设置
  25. !define MUI_HEADERIMAGE
  26. !define MUI_HEADERIMAGE_BITMAP "usb-logo2.bmp"
  27. !define MUI_HEADERIMAGE_BITMAP_NOSTRETCH
  28. !define MUI_HEADERIMAGE_RIGHT ;右边显示logo图标,左边则改为LEFT
  29. ; 定义各项变量
  30. Var DestDriveTxt
  31. Var DestDrive
  32. Var DestDisk
  33. Var LabelDrivePageText
  34. Var LabelDriveSelect
  35. Var Format
  36. Var FormatMe
  37. Var Hddmode ;在这个例子里我换成了syslinux模式
  38. Var Zipmode ;在这个例子里我换成了grub4dos模式
  39. Var HddmodeMe
  40. Var ZipmodeMe
  41. Var Warning
  42. Var Soft
  43. Var Link
  44. Var Links
  45. Var Image
  46. Var hImage
  47. Var Iso
  48. Var ISOFileTxt
  49. Var ISOSelection
  50. Var TheISO
  51. Var ISOTest
  52. Var ISOFile
  53. var BootDir

  54. Page custom drivePage ;只定义了一页

  55. !define MUI_INSTFILESPAGE_COLORS "00FF00 000000"
  56. ; Instfiles page
  57. !define MUI_TEXT_INSTALLING_TITLE $(Install_Title)
  58. !define MUI_TEXT_INSTALLING_SUBTITLE $(Install_SubTitle)
  59. !define MUI_TEXT_FINISH_SUBTITLE $(Install_Finish_Sucess)
  60. !insertmacro MUI_PAGE_INSTFILES
  61. ; Language files
  62. !insertmacro MUI_LANGUAGE "SimpChinese" ;仅支持中文
  63. LangString DrivePage_Title ${LANG_SIMPCHINESE} "【PE2USB】USB通用PE安装器"
  64. LangString DrivePage_Title2 ${LANG_SIMPCHINESE} "先插入一个USB盘,然后再打开本软件进行安装."
  65. LangString DrivePage_Text ${LANG_SIMPCHINESE} "本工具将使您的U盘完美启动."
  66. LangString DrivePage_Input ${LANG_SIMPCHINESE} "第一步:点击下拉菜单选择您的U盘"
  67. LangString Soft_Text ${LANG_SIMPCHINESE} "第二步:选择您的ISO内置的启动引导模式。必选。"
  68. LangString Iso_Text ${LANG_SIMPCHINESE} "第三步:选择您的ISO镜像文件。"
  69. LangString WarningPage_Text ${LANG_SIMPCHINESE} "注意:请确保U盘资料已备份。原资料将被完全覆写并不可恢复!"
  70. LangString Creation ${LANG_SIMPCHINESE} "创建启动和解压ISO镜像文件到U盘,请稍后"
  71. LangString Install_Title ${LANG_SIMPCHINESE} "安装中 ${DISTRO}"
  72. LangString Install_SubTitle ${LANG_SIMPCHINESE} "请稍后 ${NAME} 安装 ${DISTRO} 到 $DestDisk"
  73. LangString Install_Finish_Sucess ${LANG_SIMPCHINESE} "$\t ${NAME} 已经完成安装${DISTRO}到$DestDisk"
  74. LangString IsoFile ${LANG_SIMPCHINESE} "ISO镜像文件|*.iso"
  75. LangString Syslinux_Warning ${LANG_SIMPCHINESE} "一个错误 ($R8) 发生在当安装syslinux时.$\r$\n您的USB驱动器将不可启动..$\r$\n建议您更换U盘或格式化该盘后再试一次。"
  76. LangString grub4dos_Warning ${LANG_SIMPCHINESE} "一个错误 ($R8) 发生在当安装grub4dos时.$\r$\n您的USB驱动器将不可启动..$\r$\n建议您更换U盘或格式化该盘后再试一次。"
  77. Function .onInit
  78. InitPluginsDir
  79. SetOutPath "$PLUGINSDIR" ;开始时将所有资源调进临时文件夹以便后面直接调用
  80. File /r "src\*.*"
  81. FunctionEnd
  82. Function drivePage
  83. !insertmacro MUI_HEADER_TEXT $(DrivePage_Title) $(DrivePage_Title2)
  84. nsDialogs::Create 1018
  85. ${If} $DestDrive == ""
  86. GetDlgItem $6 $HWNDPARENT 1 ; 控制下一步的句柄
  87. EnableWindow $6 0 ; 关闭下一步按钮
  88. ${EndIf}
  89. ; 创建bmp广告位图
  90. ${NSD_CreateBitmap} 75% 0 20% 100% ""
  91. Pop $Image
  92. ${NSD_SetImage} $Image $PLUGINSDIR\ad.bmp $hImage
  93. ${NSD_CreateLabel} 0 0 70% 30 $(DrivePage_Text)
  94. Pop $LabelDrivePageText
  95. ${NSD_CreateLabel} 0 20 70% 15 $(DrivePage_Input)
  96. Pop $LabelDriveSelect
  97. SetCtlColors $LabelDriveSelect /Branding 0000BD ; 蓝色字体
  98. ;创建下拉菜单
  99. ${NSD_CreateDroplist} 0 40 30% 25 ""
  100. Pop $DestDriveTxt
  101. ${NSD_OnChange} $DestDriveTxt db_select.onchange
  102. ${GetDrives} "FDD" driveList ;FDD表示仅显示移动磁盘即U盘, HDD表示显示本地磁盘即硬盘, ALL表示显示所有磁盘
  103. ${If} $DestDrive != ""
  104. ${NSD_CB_SelectString} $DestDriveTxt $DestDrive
  105. ${EndIf}
  106. ; 增加帮助或更新网址链接
  107. ${NSD_CreateLink} 85% 190 15% 14 "软件更新"
  108. Pop $Link
  109. ${NSD_OnClick} $Link onClickMyLink
  110. ; 格式化选项
  111. ${NSD_CreateButton} 32% 38 38% 22 "(可选)FAT32格式化此U盘"
  112. Pop $Format
  113. ${NSD_OnClick} $Format FormatIt
  114. ; 说明文字
  115. ${NSD_CreateLabel} 0 70 70% 15 $(Soft_Text) ;软件内容,括号里面是调回上面的中文文字
  116. Pop $Soft
  117. SetCtlColors $Soft /Branding 0000BD ;蓝色
  118. ${NSD_CreateLabel} 0 115 70% 15 $(Iso_Text) ;内容
  119. Pop $Iso
  120. SetCtlColors $Iso /Branding 0000BD ;蓝色
  121. ${NSD_CreateText} 0 135 50% 20 "浏览已下载的*.iso文档并选择"
  122. Pop $ISOFileTxt
  123. ${NSD_CreateBrowseButton} 53% 135 65 20 "浏览"
  124. Pop $ISOSelection
  125. ${NSD_OnClick} $ISOSelection ISOBrowse
  126. ; 磁盘启动模式选项
  127. ${NSD_CreateCheckBox} 0 90 36% 15 "Syslinux启动模式."
  128. Pop $Hddmode
  129. ${NSD_Check} $Hddmode ; 默认此项打钩
  130. ${NSD_OnClick} $Hddmode HddmodeIt
  131. ${NSD_CreateCheckBox} 38% 90 36% 15 "Grub4dos启动模式."
  132. Pop $Zipmode
  133. ${NSD_OnClick} $Zipmode ZipmodeIt
  134. ; 警示标签
  135. ${NSD_CreateLabel} 0 190 80% 14 $(WarningPage_Text)
  136. Pop $Warning
  137. EnableWindow $Format 0 ;关闭提示
  138. EnableWindow $Hddmode 0
  139. EnableWindow $Zipmode 0
  140. EnableWindow $ISOFileTxt 0
  141. EnableWindow $ISOSelection 0
  142. ShowWindow $Warning 0
  143. GetDlgItem $6 $HWNDPARENT 3
  144. ShowWindow $6 0 ; 屏蔽回去
  145. nsDialogs::Show
  146. ${NSD_FreeImage} $hImage ; 释放位图
  147. FunctionEnd
  148. Function ISOBrowse
  149. nsDialogs::SelectFileDialog open "$EXEDIR" $(IsoFile) ;如果软件同目录里有ISO文键,自动选择
  150. Pop $TheISO
  151. ${NSD_SetText} $ISOFileTxt $TheISO
  152. SetCtlColors $ISOFileTxt 009900 FFFFFF
  153. StrCpy $ISOTest "$TheISO"
  154. StrCpy $ISOFile "$TheISO" ; 定义选择的镜像文件为ISOFile,以便后面解压
  155. ${NSD_SetText} $Iso "第三步完成,您的ISO镜像文件已选择."
  156. ${NSD_CreateLabel} 0 165 75% 14 "OK,点击创建即可"
  157. GetDlgItem $6 $HWNDPARENT 1 ; 控制下一步的句柄
  158. EnableWindow $6 1 ; 打开下一步按钮
  159. FunctionEnd
  160. Function onClickMyLink
  161. Pop $Links ; 为了避免错误,pop定量
  162. ExecShell "open" "http://www.ecoo168.com"
  163. FunctionEnd

  164. Function db_select.onchange
  165. Pop $DestDriveTxt
  166. ${NSD_GetText} $DestDriveTxt $0
  167. StrCpy $DestDrive "$0"
  168. StrCpy $DestDisk "$DestDrive" -1
  169. EnableWindow $Format 1 ;打开提示
  170. EnableWindow $Hddmode 1
  171. EnableWindow $Zipmode 1
  172. EnableWindow $ISOFileTxt 1
  173. EnableWindow $ISOSelection 1
  174. ShowWindow $Warning 1
  175. SetCtlColors $Warning /Branding FF0000
  176. Call HddmodeIt
  177. Call ZipmodeIt
  178. FunctionEnd
  179. ;盘符列表方程
  180. Function driveList
  181. SendMessage $DestDriveTxt ${CB_ADDSTRING} 0 "STR:$9"
  182. Push 1
  183. FunctionEnd
  184. Function HddmodeIt
  185. ${NSD_GetState} $Hddmode $HddmodeMe
  186. ${If} $HddmodeMe == ${BST_CHECKED}
  187. ${NSD_Check} $Hddmode
  188. StrCpy $HddmodeMe "Yes"
  189. ${NSD_SetText} $Hddmode "(已选)Syslinux启动模式"
  190. ${NSD_Uncheck} $Zipmode
  191. StrCpy $ZipmodeMe "No"
  192. ${NSD_SetText} $Zipmode "Grub4dos启动模式"
  193. ${ElseIf} $HddmodeMe == ${BST_UNCHECKED}
  194. ${NSD_Uncheck} $Hddmode
  195. StrCpy $HddmodeMe "No"
  196. ${NSD_SetText} $Hddmode "Syslinux启动模式"
  197. ${NSD_Check} $Zipmode
  198. StrCpy $ZipmodeMe "Yes"
  199. ${NSD_SetText} $Zipmode "(已选)Grub4dos启动模式"
  200. ${EndIf}
  201. FunctionEnd
  202. Function ZipmodeIt ; Set Format2 Option
  203. ${NSD_GetState} $Zipmode $ZipmodeMe
  204. ${If} $ZipmodeMe == ${BST_CHECKED}
  205. ${NSD_Check} $Zipmode
  206. StrCpy $ZipmodeMe "Yes"
  207. ${NSD_SetText} $Zipmode "(已选)Grub4dos启动模式"
  208. ${NSD_Uncheck} $Hddmode
  209. StrCpy $HddmodeMe "No"
  210. ${NSD_SetText} $Hddmode "Syslinux启动模式"
  211. ${ElseIf} $ZipmodeMe == ${BST_UNCHECKED}
  212. ${NSD_Uncheck} $Zipmode
  213. StrCpy $ZipmodeMe "No"
  214. ${NSD_SetText} $Zipmode "Grub4dos启动模式"
  215. ${NSD_Check} $Hddmode
  216. StrCpy $HddmodeMe "Yes"
  217. ${NSD_SetText} $Hddmode "(已选)Syslinux启动模式"
  218. ${EndIf}
  219. FunctionEnd
  220. Function FormatIt ; 设置格式化配置
  221. Pop $FormatMe
  222. MessageBox MB_YESNO "格式化U盘可以取回全部空间,继续吗?" IDYES true IDNO false
  223. true:
  224. Goto next
  225. false:
  226. MessageBox MB_OK|MB_ICONSTOP "不格式化,退出"
  227. Abort
  228. next:
  229. MessageBox MB_YESNO "真的格式化吗?(请确保您的U盘资料已经备份,格式化将擦除U盘资料且不可恢复)" /SD IDYES IDNO false2
  230. Goto next2
  231. false2:
  232. MessageBox MB_OK|MB_ICONSTOP "不格式化,退出"
  233. Abort
  234. next2: ;这是fbinst的格式化dos命令,详细请参考fbinst的官方说明, fbinst命令支持盘符c:的表示形式和hd0,hd1的表示形式
  235. nsExec::ExecToLog '"cmd" /c "echo y|$PLUGINSDIR\fbinst $DestDisk format --raw --force --fat32"'
  236. MessageBox MB_OK "格式化完成,恢复U盘全部空间。"
  237. FunctionEnd
  238. Function InstallEYes
  239. SetShellVarContext all
  240. StrCpy $R0 $DestDrive -1 ; 将盘符后面的'\'字符截去,表示为如D: 再定义为$R0
  241. ClearErrors
  242. ${If} $HddmodeMe == "Yes"
  243. DetailPrint "创建syslinux的引导到 $DestDisk, 请稍后"
  244. ExecWait '$PLUGINSDIR\syslinux.exe -maf $R0' $R8 ; 这是syslinux的dos命令行,详情请参考官方说明
  245. DetailPrint "Syslinux安装返回信息检测值=$R8 , 0表示成功"
  246. Banner::destroy
  247. ${If} $R8 != 0 ; 如果返回值不是0,则弹出警告提示框
  248. MessageBox MB_ICONEXCLAMATION|MB_OK $(Syslinux_Warning)
  249. DetailPrint "请更换u盘或格式化后再试一次。"
  250. ${EndIf}
  251. Call syscopyfile
  252. ${ElseIf} $ZipmodeMe == "Yes"
  253. DetailPrint "创建Grub4dos启动模式的引导到 $DestDisk, 请稍后"
  254. ExecWait '$PLUGINSDIR\BOOTICE.EXE /DEVICE=$R0 /mbr /install /type=grub4dos /auto' $R8 ; bootice支持的命令行,有很多用法,参考官方
  255. DetailPrint "Grub4dos安装返回信息检测值=$R8 , 0表示成功"
  256. Banner::destroy
  257. ${If} $R8 != 0 ; 如果返回值不是0,则弹出警告提示框
  258. MessageBox MB_ICONEXCLAMATION|MB_OK $(grub4dos_Warning)
  259. DetailPrint "请更换u盘或格式化后再试一次。"
  260. ${EndIf}
  261. Call grubcopyfile
  262. ${EndIf}
  263. FunctionEnd
  264. Function syscopyfile
  265. ${If} ${FileExists} "$BootDir\syslinux.cfg"
  266. ;什么也不做
  267. ${ElseIf} ${FileExists} "$BootDir\syslinux\syslinux.cfg"
  268. ;什么也不做
  269. ${ElseIf} ${FileExists} "$BootDir\boot\syslinux\syslinux.cfg"
  270. ;什么也不做
  271. ${ElseIf} ${FileExists} "$BootDir\boot\isolinux\isolinux.cfg"
  272. Rename "$BootDir\boot\isolinux" "$BootDir\boot\syslinux"
  273. Rename "$BootDir\boot\syslinux\isolinux.cfg" "$BootDir\boot\syslinux\syslinux.cfg"
  274. ${ElseIf} ${FileExists} "$BootDir\isolinux\isolinux.cfg"
  275. Rename "$BootDir\isolinux" "$BootDir\syslinux"
  276. Rename "$BootDir\syslinux\isolinux.cfg" "$BootDir\syslinux\syslinux.cfg"
  277. ${ElseIf} ${FileExists} "$BootDir\isolinux.cfg"
  278. Rename "$BootDir\isolinux.cfg" "$BootDir\syslinux.cfg"
  279. ${Else} ; 上面的文件都没有时
  280. DetailPrint "没有找到syslinux标准配置文件syslinux.cfg"
  281. DetailPrint "可能是您安装的ISO不是使用syslinux引导,"
  282. DetailPrint "或者是引导文件被修改为其他名字使我无法识别,"
  283. DetailPrint "请尝试其他启动方式或者手动寻找并编辑引导文件。"
  284. ${EndIf}
  285. ; 继续检测syslinux的图形菜单,以达到版本一致
  286. ${If} ${FileExists} "$BootDir\vesamenu.c32"
  287. CopyFiles "$PLUGINSDIR\vesamenu.c32" "$BootDir\vesamenu.c32"
  288. ${ElseIf} ${FileExists} "$BootDir\syslinux\vesamenu.c32"
  289. CopyFiles "$PLUGINSDIR\vesamenu.c32" "$BootDir\syslinux\vesamenu.c32"
  290. ${ElseIf} ${FileExists} "$BootDir\boot\syslinux\vesamenu.c32"
  291. CopyFiles "$PLUGINSDIR\vesamenu.c32" "$BootDir\boot\syslinux\vesamenu.c32"
  292. ${EndIf}
  293. FunctionEnd
  294. Function grubcopyfile
  295. ;如果要拷贝文件进去,请在资源包里增加相应文件,拷贝命令如下
  296. # CopyFiles "$PLUGINSDIR\grldr" "$BootDir\grldr"
  297. # CopyFiles "$PLUGINSDIR\menu.lst" "$BootDir\menu.lst"
  298. ${If} ${FileExists} "$BootDir\grldr"
  299. ${ElseIf} ${FileExists} "$BootDir\grub\grldr"
  300. ${ElseIf} ${FileExists} "$BootDir\boot\grub\grldr"
  301. ${ElseIf} ${FileExists} "$BootDir\grub.exe"
  302. ${ElseIf} ${FileExists} "$BootDir\boot\grub.exe"
  303. ${ElseIf} ${FileExists} "$BootDir\boot\grub\grub.exe"
  304. ${Else} ; 如果上述任一文件都没有,显示以下提示
  305. DetailPrint "没有找到grub4dos标准配置文件grldr。"
  306. DetailPrint "可能是您安装的ISO不是使用grub4dos引导,"
  307. DetailPrint "或者是引导文件被修改为其他名字使我无法识别,"
  308. DetailPrint "请尝试其他启动方式或者手动寻找并编辑引导文件。"
  309. ${EndIf}
  310. FunctionEnd
  311. Section "Install" main
  312. StrCpy $BootDir $DestDrive -1 ; 将盘符后面的'\'字符截去,表示为如D: 再定义为bootdir
  313. StrCpy $BootDir "$BootDir"
  314. DetailPrint $(Creation)
  315. ExecWait '"$PLUGINSDIR\7zG.exe" x "$ISOFile" -o"$BootDir" -y -x![BOOT]*' ;这是内置7z自动解压ISO镜像文件到磁盘
  316. DetailPrint "正在检测和配置标准启动文件,请稍后"
  317. Call InstallEYes
  318. SectionEnd
复制代码
如果您愿意,制作好的作品帖张图片跟贴,我将您的图片链接在1楼。

网友作品1: #83楼

网友作品2:   #138

[ 本帖最后由 2010teasiu 于 2011-5-4 17:44 编辑 ]

winly-USB-installer.rar

210.56 KB, 下载次数: 4575, 下载积分: 无忧币 -2


作者: teasiu    时间: 2011-4-10 01:56
这是一个关于安装内置fba包的安装器脚本。

  1. ##开源的故事一直鼓励着我不断的学习这些知识,
  2. ##这是一个可以安装fba包的u盘启动安装器源码,
  3. ##大家看到很多的类似软件比如"大白菜""一键U盘工作室"等等,就是用这个原理做出来的。
  4. ##fbinstool的其中一部分原理,也是类似的
  5. ##触类旁通,如果你熟练了,就大胆的修改这些代码,设计成你想要的样子吧
  6. ##资源包src里面的slitaz4.fba是一个空文件,请用自己的fba包替换。
  7. ##=====================================
  8. ##本源码由teasiu@163.com创建。请保留此信息。
  9. ##=====================================
  10. !define NAME "SlitazUSB"
  11. !define DISTRO "SlitazUSB"
  12. !define FILENAME "SlitazUSB"
  13. !define VERSION "0.3"
  14. !define MUI_ICON "usb48.ico"
  15. RequestExecutionLevel highest
  16. SetCompressor LZMA
  17. CRCCheck On
  18. XPStyle on
  19. ShowInstDetails show
  20. BrandingText "USB启动通用安装器 神雕teasiu作品"
  21. CompletedText "安装结束,欢迎使用和收藏本工具!  --神雕teasiu"
  22. InstallButtonText "创 建"
  23. Name "${NAME} ${VERSION}"
  24. OutFile "${FILENAME} ${VERSION}.exe"
  25. !include "nsDialogs.nsh"
  26. !include "MUI2.nsh"
  27. !include "FileFunc.nsh"
  28. !include "WordFunc.nsh" ;DriveList
  29. ; Interface settings
  30. !define MUI_HEADERIMAGE
  31. !define MUI_HEADERIMAGE_BITMAP "usb-logo2.bmp"
  32. !define MUI_HEADERIMAGE_BITMAP_NOSTRETCH
  33. !define MUI_HEADERIMAGE_RIGHT
  34. ; Drive page
  35. Var DestDriveTxt
  36. Var DestDrive
  37. Var DestDisk
  38. Var LabelDrivePageText
  39. Var LabelDriveSelect
  40. Var Format
  41. Var FormatMe
  42. Var Hddmode
  43. Var Zipmode
  44. Var HddmodeMe
  45. Var ZipmodeMe
  46. Var Warning
  47. Var Soft
  48. Var Link
  49. Var Links
  50. Var Image
  51. Var hImage
  52. #Page custom SetCustom LeaveCustom
  53. Page custom drivePage

  54. !define MUI_INSTFILESPAGE_COLORS "00FF00 000000"
  55. ; Instfiles page
  56. !define MUI_TEXT_INSTALLING_TITLE $(Install_Title)
  57. !define MUI_TEXT_INSTALLING_SUBTITLE $(Install_SubTitle)
  58. !define MUI_TEXT_FINISH_SUBTITLE $(Install_Finish_Sucess)
  59. !insertmacro MUI_PAGE_INSTFILES
  60. ; Language files
  61. !insertmacro MUI_LANGUAGE "SimpChinese"
  62. LangString DrivePage_Title ${LANG_SIMPCHINESE} "【SlitazUSB】USB移动系统安装器"
  63. LangString DrivePage_Title2 ${LANG_SIMPCHINESE} "先插入一个USB盘,然后再打开本软件进行安装."
  64. LangString DrivePage_Text ${LANG_SIMPCHINESE} "本工具将使您的U盘完美启动."
  65. LangString DrivePage_Input ${LANG_SIMPCHINESE} "第一步:点击下拉菜单选择您的U盘"
  66. LangString Soft_Text ${LANG_SIMPCHINESE} "第二步:选择USB设备启动引导模式。必选。"
  67. LangString Iso_Text ${LANG_SIMPCHINESE} "第三步:选择您的ISO镜像文件。"
  68. LangString WarningPage_Text ${LANG_SIMPCHINESE} "注意:请确保U盘资料已备份。原资料将被完全覆写并不可恢复!"
  69. LangString Install_Title ${LANG_SIMPCHINESE} "安装中 ${DISTRO}"
  70. LangString Install_SubTitle ${LANG_SIMPCHINESE} "请稍后 ${NAME} 安装 ${DISTRO} 到 $DestDisk"
  71. LangString Install_Finish_Sucess ${LANG_SIMPCHINESE} "$\t ${NAME} 已经完成安装${DISTRO}到$DestDisk"
  72. Function .onInit
  73.   InitPluginsDir
  74.   File /oname=$PLUGINSDIR\ad.bmp "ad.bmp" ; 嵌入bmp位图以便后面调用
  75. FunctionEnd
  76. Function drivePage
  77.   !insertmacro MUI_HEADER_TEXT $(DrivePage_Title) $(DrivePage_Title2)
  78.   nsDialogs::Create 1018
  79.   ${If} $DestDrive == ""
  80.   GetDlgItem $6 $HWNDPARENT 1 ; Get next control handle
  81.   EnableWindow $6 0 ; disable next
  82.   ${EndIf}
  83.   ;创建bmp位图
  84. ${NSD_CreateBitmap} 75% 0 20% 100% ""
  85. Pop $Image
  86. ${NSD_SetImage} $Image $PLUGINSDIR\ad.bmp $hImage

  87.   ${NSD_CreateLabel} 0 0 70% 30 $(DrivePage_Text)
  88.   Pop $LabelDrivePageText
  89.   ${NSD_CreateLabel} 0 20 70% 15 $(DrivePage_Input)
  90.   Pop $LabelDriveSelect
  91.   SetCtlColors $LabelDriveSelect /Branding 0000BD
  92.   
  93.   ${NSD_CreateDroplist} 0 40 30% 25 ""
  94.   Pop $DestDriveTxt
  95.   ${NSD_OnChange} $DestDriveTxt db_select.onchange
  96.   ${GetDrives} "FDD" driveList  ; FDD代表移动磁盘,本地磁盘用HDD,所有磁盘用ALL
  97.   ${If} $DestDrive != ""
  98.   ${NSD_CB_SelectString} $DestDriveTxt $DestDrive
  99.   ${EndIf}
  100. ; Add Help Link
  101.   ${NSD_CreateLink} 85% 190 15% 14 "软件更新" ; 创建一个链接地址 85%代表位置横坐标,190代表位置纵坐标,15%代表内容横坐标,14代表内容纵坐标
  102.   Pop $Link
  103.   ${NSD_OnClick} $Link onClickMyLink
  104. ; Format Drive Option
  105.   ${NSD_CreateButton} 32% 38 38% 22 "(可选)FAT32格式化此U盘"
  106.   Pop $Format
  107.   ${NSD_OnClick} $Format FormatIt
  108. ; Soft Label
  109.   ${NSD_CreateLabel} 0 70 70% 15 $(Soft_Text) ;软件内容 0代表位置横坐标,70代表位置纵坐标,70%代表内容横坐标,15代表内容纵坐标
  110.   Pop $Soft
  111.   SetCtlColors $Soft /Branding 0000BD
  112.   
  113. ; 磁盘启动模式选项
  114.   ${NSD_CreateCheckBox} 0 90 36% 15 "HDD启动模式."
  115.   Pop $Hddmode
  116.   ${NSD_Check} $Hddmode
  117.   ${NSD_OnClick} $Hddmode HddmodeIt
  118.   ${NSD_CreateCheckBox} 38% 90 36% 15 "ZIP启动模式."
  119.   Pop $Zipmode
  120.   ${NSD_OnClick} $Zipmode ZipmodeIt
  121. ; Warning Label
  122.   ${NSD_CreateLabel} 0 190 80% 14 $(WarningPage_Text)
  123.   Pop $Warning
  124.   EnableWindow $Format 0
  125.   EnableWindow $Hddmode 0
  126.   EnableWindow $Zipmode 0
  127.   ShowWindow $Warning 0
  128.   GetDlgItem $6 $HWNDPARENT 3
  129.   ShowWindow $6 0 ; Disable Back
  130.   nsDialogs::Show
  131.   ${NSD_FreeImage} $hImage
  132. FunctionEnd

  133. Function onClickMyLink
  134.   Pop $Links ; pop something to prevent corruption
  135.   ExecShell "open" "http://www.ecoo168.com"
  136. FunctionEnd

  137. Function db_select.onchange
  138.   Pop $DestDriveTxt
  139.   ${NSD_GetText} $DestDriveTxt $0
  140.   StrCpy $DestDrive "$0"
  141.   StrCpy $DestDisk "$DestDrive" -1
  142.   GetDlgItem $6 $HWNDPARENT 1 ; Get "Next" control handle
  143.   EnableWindow $6 1 ; enable "Next" control
  144.   EnableWindow $Format 1  
  145.   EnableWindow $Hddmode 1
  146.   EnableWindow $Zipmode 1
  147.   ShowWindow $Warning 1
  148.   SetCtlColors $Warning /Branding FF0000
  149.   Call HddmodeIt
  150.   Call ZipmodeIt
  151. FunctionEnd
  152. Function driveList ; 磁盘列表,表示形式为盘符CDE等
  153. SendMessage $DestDriveTxt ${CB_ADDSTRING} 0 "STR:$9"
  154. Push 1
  155. FunctionEnd
  156. ;下面2个方程的意思是:无论用户怎么点击,都必须要选中一个
  157. Function HddmodeIt
  158.   ${NSD_GetState} $Hddmode $HddmodeMe
  159.   
  160.   ${If} $HddmodeMe == ${BST_CHECKED}
  161.   ${NSD_Check} $Hddmode
  162.   StrCpy $HddmodeMe "Yes"
  163.   ${NSD_SetText} $Hddmode "(已选)HDD启动模式"
  164.   ${NSD_Uncheck} $Zipmode
  165.   StrCpy $ZipmodeMe "No"
  166.   ${NSD_SetText} $Zipmode "ZIP启动模式"
  167.   
  168.   ${ElseIf} $HddmodeMe == ${BST_UNCHECKED}
  169.   ${NSD_Uncheck} $Hddmode
  170.   StrCpy $HddmodeMe "No"
  171.   ${NSD_SetText} $Hddmode "HDD启动模式"
  172.   ${NSD_Check} $Zipmode
  173.   StrCpy $ZipmodeMe "Yes"
  174.   ${NSD_SetText} $Zipmode "(已选)ZIP启动模式"
  175.   ${EndIf}
  176. FunctionEnd
  177. Function ZipmodeIt ; Set Format Option
  178.   ${NSD_GetState} $Zipmode $ZipmodeMe
  179.   ${If} $ZipmodeMe == ${BST_CHECKED}
  180.   ${NSD_Check} $Zipmode
  181.   StrCpy $ZipmodeMe "Yes"
  182.   ${NSD_SetText} $Zipmode "(已选)ZIP启动模式"
  183.   ${NSD_Uncheck} $Hddmode
  184.   StrCpy $HddmodeMe "No"
  185.   ${NSD_SetText} $Hddmode "HDD启动模式"
  186.   ${ElseIf} $ZipmodeMe == ${BST_UNCHECKED}
  187.   ${NSD_Uncheck} $Zipmode
  188.   StrCpy $ZipmodeMe "No"
  189.   ${NSD_SetText} $Zipmode "ZIP启动模式"
  190.   ${NSD_Check} $Hddmode
  191.   StrCpy $HddmodeMe "Yes"
  192.   ${NSD_SetText} $Hddmode "(已选)HDD启动模式"
  193.   ${EndIf}
  194. FunctionEnd
  195. Function FormatIt ; Set Format Option这里增加询问框,更加人性化
  196.   Pop $FormatMe
  197.   MessageBox MB_YESNO "格式化U盘可以取回全部空间,继续吗?" IDYES true IDNO false
  198. true:
  199.   Goto next
  200. false:
  201.   MessageBox MB_OK|MB_ICONSTOP "不格式化,退出"
  202.   Abort
  203. next:
  204.   MessageBox MB_YESNO "真的格式化吗?(请确保您的U盘资料已经备份,格式化将擦除U盘资料且不可恢复)" /SD IDYES IDNO false2
  205.   Goto next2
  206. false2:
  207.   MessageBox MB_OK|MB_ICONSTOP "不格式化,退出"
  208.   Abort
  209. next2:
  210.   InitPluginsDir
  211. File /oname=$PLUGINSDIR\fbinst.exe "src\fbinst.exe" ;调用一下src文件夹里面的fbinst.exe用于格式化
  212.   nsExec::ExecToLog '"cmd" /c "echo y|$PLUGINSDIR\fbinst $DestDisk format --raw --force --fat32"'
  213.   MessageBox MB_OK "格式化完成,恢复U盘全部空间。"
  214. FunctionEnd
  215. Function InstallEYes
  216.   InitPluginsDir
  217.   SetOutPath "$PLUGINSDIR"
  218.   File /r "src\*.*" ;文件夹src里面必须包含2个文件,fbinst.exe和你的fba包,在这个例子里名字为slitaz4.fba,下面要相对应名字
  219.   ${If} $HddmodeMe == "Yes"
  220.   DetailPrint "创建HDD模式的引导和复制slitaz系统到 $DestDisk, 请稍后"
  221. ;下面这段请根据您的fba包大小来填写UD扩展分区的大小extended ?m,UD主分区默认大小是8m,否则会出现安装错误。
  222. ;fba包目前使用fbinstool工具比较方便,假如你很掌握fbinst命令,也完全可以使用命令在这里创建fba包然后安装它,写起来比较复杂。
  223.   nsExec::ExecToLog '"cmd" /c "echo y|$PLUGINSDIR\fbinst $DestDisk format --extended 80m --force --align --primary 8m --archive $PLUGINSDIR\slitaz4.fba"'
  224.   DetailPrint "Slitaz系统已经安装到$DestDisk的隐藏区占88M"
  225. ${ElseIf} $ZipmodeMe == "Yes"
  226.   DetailPrint "创建Zip模式的引导和复制slitaz系统到 $DestDisk, 请稍后"
  227.   nsExec::ExecToLog '"cmd" /c "echo y|$PLUGINSDIR\fbinst $DestDisk format --extended 80m --force --zip --align --primary 8m --archive $PLUGINSDIR\slitaz4.fba"'
  228.   DetailPrint "Slitaz系统zip模式已经安装到$DestDisk的隐藏区占88M"
  229. ${EndIf}
  230. FunctionEnd
  231. Section "Install" main
  232.   Call InstallEYes ;指令安装进程程式
  233.   nsExec::ExecToLog '"cmd" /c "echo y|$PLUGINSDIR\fbinst $DestDisk pack"' ;安装完成后整理碎片
  234. SectionEnd
复制代码


[ 本帖最后由 2010teasiu 于 2011-4-13 04:24 编辑 ]

slitazusb.zip

76.4 KB, 下载次数: 3514, 下载积分: 无忧币 -2


作者: teasiu    时间: 2011-4-10 01:57
本帖最后由 2010teasiu 于 2013-4-18 17:32 编辑

三楼占位继续发布第3个源码


一个简单的代码,适合新手学习:
  1. !define NAME "Syslinux4USB"
  2. !define DISTRO "Boot Files"
  3. !define FILENAME "Syslinux4USB"
  4. !define VERSION "v0.1"
  5. !define MUI_ICON "syslinux4usb.ico"
  6. RequestExecutionLevel highest
  7. SetCompressor LZMA
  8. CRCCheck On
  9. XPStyle on
  10. ShowInstDetails show
  11. BrandingText "USB启动界面美化最佳方案 神雕teasiu作品"
  12. CompletedText "启动安装完成,您的USB盘现在已经准备好启动了!"
  13. InstallButtonText "创建"
  14. Name "${NAME} ${VERSION}"
  15. OutFile "${FILENAME}.exe"
  16. !include "MUI2.nsh"
  17. !include "FileFunc.nsh"
  18. ; Interface settings
  19. !define MUI_FINISHPAGE_NOAUTOCLOSE
  20. !define MUI_HEADERIMAGE
  21. !define MUI_HEADERIMAGE_BITMAP "usb-logo-nsis.bmp"
  22. !define MUI_HEADERIMAGE_BITMAP_NOSTRETCH
  23. !define MUI_HEADERIMAGE_RIGHT
  24. ; License page
  25. !define MUI_TEXT_LICENSE_SUBTITLE $(License_Subtitle)
  26. !define MUI_LICENSEPAGE_TEXT_TOP $(License_Text_Top)
  27. !define MUI_LICENSEPAGE_TEXT_BOTTOM $(License_Text_Bottom)
  28. !insertmacro MUI_PAGE_LICENSE "license.txt"
  29. ; Drive page
  30. Var DestDriveTxt
  31. Var DestDrive
  32. Var DestDisk
  33. Var LabelDrivePageText
  34. Var LabelDriveSelect
  35. Var Format
  36. Var FormatMe
  37. Var Warning
  38. Page custom drivePage
  39. ; Instfiles page
  40. !define MUI_INSTFILESPAGE_COLORS "00FF00 000000" ;Green and Black
  41. !define MUI_TEXT_INSTALLING_TITLE $(Install_Title)
  42. !define MUI_TEXT_INSTALLING_SUBTITLE $(Install_SubTitle)
  43. !define MUI_TEXT_FINISH_SUBTITLE $(Install_Finish_Sucess)
  44. !insertmacro MUI_PAGE_INSTFILES
  45. ; Finish page
  46. !define MUI_FINISHPAGE_TITLE $(Finish_Title)
  47. !define MUI_FINISHPAGE_TEXT $(Finish_Text)
  48. !define MUI_FINISHPAGE_LINK $(Finish_Link)
  49. !define MUI_FINISHPAGE_LINK_LOCATION "http://www.jhjh.org/"
  50. !insertmacro MUI_PAGE_FINISH
  51. ; Language files
  52. !insertmacro MUI_LANGUAGE "English" ;first language is the default language
  53. !insertmacro MUI_LANGUAGE "SimpChinese"
  54. ; English
  55. LangString License_Subtitle ${LANG_ENGLISH} "Please review the license terms before running ${NAME}."
  56. LangString License_Text_Top ${LANG_ENGLISH} "The software within this program falls under the following License."
  57. LangString License_Text_Bottom ${LANG_ENGLISH} "You must accept the terms of this License agreement to run ${NAME}. If you agree, Click I Agree to Continue."
  58. LangString Finish_Title ${LANG_ENGLISH} "${NAME} has completed the installation."
  59. LangString Finish_Text ${LANG_ENGLISH} "The necessary files are installed on your USB drive and the drive is bootable.$\r$\n$\r$\nNow you should proceed to see if it boots"
  60. LangString Finish_Link ${LANG_ENGLISH} "Visit the Official Memtest86+ Site"
  61. LangString DrivePage_Title ${LANG_ENGLISH} "Choose USB drive location"
  62. LangString DrivePage_Title2 ${LANG_ENGLISH} "Choose the USB drive in which to make bootable."
  63. LangString DrivePage_Text ${LANG_ENGLISH} "Please select your USB Flash Drive and Format option. ${NAME} will proceed to make this drive Bootable and install the Memtest86+ tool on it."
  64. LangString DrivePage_Input ${LANG_ENGLISH} "Select your USB Flash Drive"
  65. LangString WarningPage_Text ${LANG_ENGLISH} "WARNING!! Contents on this Drive will be deleted. Any exisiting MBR WILL be overwritten. Make sure you have backed up any important content!$\r$\n$\r$\nWhen you are sure, click Create to proceed."
  66. LangString Syslinux_Creation ${LANG_ENGLISH} "Create syslinux configuration and moving files to $DestDrive "
  67. LangString Syslinux_Execution ${LANG_ENGLISH} "Execute syslinux on $R0"
  68. LangString Syslinux_Warning ${LANG_ENGLISH} "An error ($R8) occurred while executing syslinux.$\r$\nYour USB drive won't be bootable..."
  69. LangString Install_Title ${LANG_ENGLISH} "Installing ${DISTRO}"
  70. LangString Install_SubTitle ${LANG_ENGLISH} "Please wait while ${NAME} installs ${DISTRO} on $0"
  71. LangString Install_Finish_Sucess ${LANG_ENGLISH} "${NAME} sucessfully installed ${DISTRO} on $0"
  72. LangString License_Subtitle ${LANG_SIMPCHINESE} "创建USB启动之前请认真阅读本协议 ${NAME}."
  73. LangString License_Text_Top ${LANG_SIMPCHINESE} "本程序的软件属于下面的许可."
  74. LangString License_Text_Bottom ${LANG_SIMPCHINESE} "您必须接受以下许可协议来运行 ${NAME}.$\r$\n$\r$\n 如果你同意,请按 我接受 然后继续."
  75. LangString Finish_Title ${LANG_SIMPCHINESE} "${NAME} 已经完成启动创建."
  76. LangString Finish_Text ${LANG_SIMPCHINESE} "必要的文件已安装在您的USB驱动器并且可启动.$\r$\n$\r$\n现在您可以启动它并进行引导了."
  77. LangString Finish_Link ${LANG_SIMPCHINESE} "访问本启动器作者的官方网站"
  78. LangString DrivePage_Title ${LANG_SIMPCHINESE} "选择USB驱动器的位置"
  79. LangString DrivePage_Title2 ${LANG_SIMPCHINESE} "在框中选择您想让它可启动的USB驱动器."
  80. LangString DrivePage_Text ${LANG_SIMPCHINESE} "请选择您的USB闪存驱动器和格式选项. ${NAME}使该驱动器可启动并进行引导."
  81. LangString DrivePage_Input ${LANG_SIMPCHINESE} "选择您的USB闪存驱动器"
  82. LangString WarningPage_Text ${LANG_SIMPCHINESE} "警告!此驱动器的内容将被删除. 任何现有的MBR将被覆盖. 请确认您的重要内容已经备份!$\r$\n$\r$\n如果您确认完毕, 点击创建按钮."
  83. LangString Syslinux_Creation ${LANG_SIMPCHINESE} "创建syslinux的配置和移动文件到$DestDrive"
  84. LangString Syslinux_Execution ${LANG_SIMPCHINESE} "执行syslinux到 $R0"
  85. LangString Syslinux_Warning ${LANG_SIMPCHINESE} "一个错误 ($R8) 发生在当执行syslinux时.$\r$\n您的USB驱动器将不可启动.."
  86. LangString Install_Title ${LANG_SIMPCHINESE} "安装中 ${DISTRO}"
  87. LangString Install_SubTitle ${LANG_SIMPCHINESE} "请稍后 ${NAME} 安装 ${DISTRO} 到 $0"
  88. LangString Install_Finish_Sucess ${LANG_SIMPCHINESE} "${NAME} 已经成功安装了 ${DISTRO} 到 $0"
  89. Function drivePage
  90. !insertmacro MUI_HEADER_TEXT $(DrivePage_Title) $(DrivePage_Title2)
  91. nsDialogs::Create 1018
  92. ${If} $DestDrive == ""
  93. GetDlgItem $6 $HWNDPARENT 1 ; Get next control handle
  94. EnableWindow $6 0 ; disable next
  95. ${EndIf}
  96. ${NSD_CreateLabel} 0 0 100% 30 $(DrivePage_Text)
  97. Pop $LabelDrivePageText
  98. ${NSD_CreateLabel} 0 50 100% 15 $(DrivePage_Input)
  99. Pop $LabelDriveSelect
  100. ${NSD_CreateDroplist} 0 68 23% 20 ""
  101. Pop $DestDriveTxt
  102. ${NSD_OnChange} $DestDriveTxt db_select.onchange
  103. ${GetDrives} "FDD" driveList
  104. ${If} $DestDrive != ""
  105. ${NSD_CB_SelectString} $DestDriveTxt $DestDrive
  106. ${EndIf}
  107. ; Format Drive Option
  108. ${NSD_CreateCheckBox} 25% 68 75% 15 "如果你想格式化USB驱动器,选中此复选框."
  109. Pop $Format
  110. ${NSD_OnClick} $Format FormatIt
  111. ; Warning Label
  112. ${NSD_CreateLabel} 0 120 100% 60 $(WarningPage_Text)
  113. Pop $Warning
  114. EnableWindow $Format 0
  115. ShowWindow $Warning 0
  116. GetDlgItem $6 $HWNDPARENT 3
  117. ShowWindow $6 0 ; Disable Back
  118. nsDialogs::Show
  119. FunctionEnd
  120. Function db_select.onchange
  121. Pop $DestDriveTxt
  122. ${NSD_GetText} $DestDriveTxt $0
  123. StrCpy $DestDrive "$0"
  124. StrCpy $DestDisk $DestDrive -1
  125. GetDlgItem $6 $HWNDPARENT 1 ; Get "Next" control handle
  126. EnableWindow $6 1 ; enable "Next" control
  127. EnableWindow $Format 1
  128. ShowWindow $Warning 1
  129. SetCtlColors $Warning /Branding FF0000
  130. Call FormatIt
  131. FunctionEnd
  132. Function driveList
  133. SendMessage $DestDriveTxt ${CB_ADDSTRING} 0 "STR:$9"
  134. Push 1
  135. FunctionEnd
  136. Function FormatIt ; Set Format Option
  137. ${NSD_GetState} $Format $FormatMe
  138. ${If} $FormatMe == ${BST_CHECKED}
  139. ${NSD_Check} $Format
  140. StrCpy $FormatMe "Yes"
  141. ${NSD_SetText} $Format "我们将格式化 $DestDrive 为 Fat32."
  142. ${ElseIf} $FormatMe == ${BST_UNCHECKED}
  143. ${NSD_Uncheck} $Format
  144. ${NSD_SetText} $Format "(推荐)如果你想格式化USB驱动器,选中此复选框 $DestDrive"
  145. ${EndIf}
  146. FunctionEnd
  147. Function FormatYes ; If Format is checked, do something
  148. ${If} $FormatMe == "Yes"
  149. DetailPrint "正在格式化 $DestDisk"
  150. InitPluginsDir
  151. File /oname=$PLUGINSDIR\fbinst.exe "fbinst.exe"
  152. # nsExec::ExecToLog '"cmd" /c "format $DestDisk /FS:Fat32 /V:JHJHORG /Q /y"'
  153. nsExec::ExecToLog '"cmd" /c "echo y|$PLUGINSDIR\fbinst $DestDisk format --raw --force --fat32"'
  154. ${EndIf}
  155. FunctionEnd
  156. Section "Copyfiles" main
  157. Call FormatYes ; Format the Drive?
  158. InitPluginsDir
  159. File /oname=$PLUGINSDIR\syslinux.exe "syslinux.exe"
  160. File /oname=$PLUGINSDIR\syslinux.cfg "syslinux.cfg"
  161. File /oname=$PLUGINSDIR\Readme.txt "Readme.txt"
  162. File /oname=$PLUGINSDIR\vesamenu.c32 "vesamenu.c32"
  163. File /oname=$PLUGINSDIR\reboot.c32 "reboot.c32"
  164. File /oname=$PLUGINSDIR\poweroff.com "poweroff.com"
  165. File /oname=$PLUGINSDIR\memdisk "memdisk"
  166. File /oname=$PLUGINSDIR\chain.c32 "chain.c32"
  167. File /oname=$PLUGINSDIR\back.jpg "back.jpg"
  168. SetShellVarContext all
  169. ; Execute syslinux on the drive
  170. StrCpy $R0 $DestDrive -1 ; remove \ for syslinux
  171. ClearErrors
  172. DetailPrint $(Syslinux_Execution)
  173. ExecWait '$PLUGINSDIR\syslinux.exe -maf $R0' $R8
  174. DetailPrint "Return $R8"
  175. Banner::destroy
  176. ${If} $R8 != 0
  177. MessageBox MB_ICONEXCLAMATION|MB_OK $(Syslinux_Warning)
  178. ${EndIf}
  179. ; Create files
  180. Var /GLOBAL BootDir
  181. StrCpy $BootDir $DestDrive -1
  182. StrCpy $BootDir "$BootDir"
  183. DetailPrint $(Syslinux_Creation)
  184. CopyFiles "$PLUGINSDIR\syslinux.cfg" "$BootDir\syslinux.cfg" ; move syslinux.cfg
  185. CopyFiles "$PLUGINSDIR\Readme.txt" "$BootDir\Readme.txt" ; move Readme
  186. CopyFiles "$PLUGINSDIR\vesamenu.c32" "$BootDir\vesamenu.c32"
  187. CopyFiles "$PLUGINSDIR\reboot.c32" "$BootDir\reboot.c32"
  188. CopyFiles "$PLUGINSDIR\poweroff.com" "$BootDir\poweroff.com"
  189. CopyFiles "$PLUGINSDIR\memdisk" "$BootDir\memdisk"
  190. CopyFiles "$PLUGINSDIR\chain.c32" "$BootDir\chain.c32"
  191. CopyFiles "$PLUGINSDIR\back.jpg" "$BootDir\back.jpg"
  192. SectionEnd
复制代码

作者: 2011qwqw    时间: 2011-4-10 10:01
提示: 作者被禁止或删除 内容自动屏蔽
作者: maanu    时间: 2011-4-10 10:27
very nice release my friend ,

can i use the source to produce my english version also ? i just need to have the understand of some chinese text i think , which is in the source code,

and i guess it all depends on the fbinst ? which then format the usb drive.?

what is the routine to copy files , will it copy files which are packed in itor will it read the " directory where we will point it "

thanks again.

Maanu from Pakistan
作者: maanu    时间: 2011-4-10 10:29
also ,

is this also depend on the same source code ?

http://bbs.wuyou.net/forum.php?m ... &extra=page%3D1
作者: teasiu    时间: 2011-4-10 10:46
原帖由 maanu 于 2011-4-10 10:29 发表
also ,

is this also depend on the same source code ?

http://bbs.wuyou.net/forum.php?mod=viewthread&tid=186976&extra=page%3D1


Yes. It is.

I will upload that source later.
作者: shan    时间: 2011-4-10 10:53
收藏慢慢学习哈,楼主高人啊
作者: teasiu    时间: 2011-4-10 10:59
原帖由 maanu 于 2011-4-10 10:27 发表
very nice release my friend ,

can i use the source to produce my english version also ? i just need to have the understand of some chinese text i think , which is in the source code,

and i ...


In this case ,
Just used the fbinst to format USB drive in fat32,
and than make sysylinux & grub4dos bootable.

If you want to use the fbinst make bootable,  
It can be also. My another release will upload....
作者: jiaxinfu    时间: 2011-4-10 17:20
这个精品,一定要支持
作者: xhwy2    时间: 2011-4-10 20:22
俺是菜鸟,,进来膜拜下,慢慢学习,,,
作者: 2011pkri    时间: 2011-4-10 20:29
标题: 这个绝对是精品@
感谢分享,楼主继续发布二三楼啊~~~
作者: 快雪时晴    时间: 2011-4-10 20:33
标题: 回复 #1 2010teasiu 的帖子
特意登录一下表达敬意!

NSIS尚未接触过,标记下
作者: maanu    时间: 2011-4-11 01:03
@ 2010teasiu

thanks for the reply . i will wait for another version as you promised.
作者: 2011pkri    时间: 2011-4-11 07:32
标题: 回复 #1 2010teasiu 的帖子
新手问下,压缩包里面的“vesamenu.c32”文件起什么作用?
还有,非常希望楼主能够发布Fba源码学习,谢谢!
作者: teasiu    时间: 2011-4-11 07:40
原帖由 2011pkri 于 2011-4-11 07:32 发表
新手问下,压缩包里面的“vesamenu.c32”文件起什么作用?
还有,非常希望楼主能够发布Fba源码学习,谢谢!


这个问题问得好,证明您有认真研究学习。

为了鼓励,我详细点回答您:

sysylinux有很多版本,ISO发行的镜像使用isolinux非常普遍,
但是,有些iso发行者(PE或系统制作者),比如ylmfos,使用的还是旧版3.86的版本,
而新本的isolinux/syslinux的图形菜单文件从4.00开始就不一样了。

我内置的sysylinux是4.03版本,担心有些PE制作者的ISO使用旧版的图形菜单文件,
所以增加了一个检测,当检测到有vesamenu.c32存在时,用内置的新版文件覆盖。
以便达到一致。避免了错误发生。
作者: zjghjs    时间: 2011-4-11 10:42
原帖由 <i>2010teasiu</i> 于 2011-4-10 01:56 发表 <a href="http://bbs.wuyou.net/redirect.php?goto=findpost&pid=2201131&ptid=191252" target="_blank"><img src="http://bbs.wuyou.net/images/common/back.gif" border="0" onload="if(this.width>screen.width*0.7) {this.resized=true; this.width=screen.width*0.7; this.alt='Click here to open new window\nCTRL+Mouse wheel to zoom in/out';}" onmouseover="if(this.width>screen.width*0.7) {this.resized=true; this.width=screen.width*0.7; this.style.cursor='hand'; this.alt='Click here to open new window\nCTRL+Mouse wheel to zoom in/out';}" onclick="if(!this.resized) {return true;} else {window.open(this.src);}" onmousewheel="return imgzoom(this);" alt="" /></a><br />
二楼占位继续发布第2个源码<br />
<br />
这个是关于安装内置fba包的脚本。<br />
<br />
看大家是否有需求了。<br />
<br />
<br />
<br />
等待中!谢谢!!
作者: teasiu    时间: 2011-4-11 10:55
原帖由 zjghjs 于 2011-4-11 10:42 发表

等待中!谢谢!!


看看反应,没有想象中的热闹,唉,有点灰心。。
作者: cqflfzlyx    时间: 2011-4-11 11:15
我等待2楼fba的安装包吧,谢谢神雕啦!!!
作者: 2011bomboy    时间: 2011-4-11 14:38
这个灰常好,一定要支持
作者: 2011QaSanil    时间: 2011-4-11 14:52
代码真看不懂,很强  谢谢啦
作者: zqywult    时间: 2011-4-11 15:23
请问LZ:
编译好的“通用一键U盘PE安装器”哪里可以下载???
谢谢了!!!
作者: molingjian    时间: 2011-4-11 17:44
这种样子的代码第一次见啊  学习了......   有点看不懂
作者: ziyun    时间: 2011-4-11 17:58
收藏备用了!谢谢楼主分享!
作者: 天涯海角1216    时间: 2011-4-11 18:07
非常感谢!
授人以渔!

请楼主继续努力!
作者: 2010wzcy    时间: 2011-4-11 19:49
非常感谢您的分享 强烈支持
作者: teasiu    时间: 2011-4-11 19:52
标题: 回复 #25 天涯海角1216 的帖子
感谢支持。希望论坛能将附件转换为论坛地址,以便网友持久下载。

我这里有限制无法直接上传。
作者: Hcrty    时间: 2011-4-11 20:27
建议楼主添加上 usb-hdd 和 usb-zip 启动...
作者: hymming    时间: 2011-4-11 21:33
激动不已,我支持,我顶!
作者: jiayang83    时间: 2011-4-11 21:51
强帖。一定要顶的,再慢慢学习。
作者: cqflfzlyx    时间: 2011-4-12 09:00
一个小时顶一次,直到源码全放出来!!
作者: teasiu    时间: 2011-4-12 09:05
原帖由 cqflfzlyx 于 2011-4-12 09:00 发表
一个小时顶一次,直到源码全放出来!!


真的吗?别开玩笑哦。我昨晚到现在还没睡呢。。。
作者: zhongjishangren    时间: 2011-4-12 10:06
谢谢了,u盘启动真的很需要!
作者: nineoneone    时间: 2011-4-12 10:27
谢谢··············
作者: cqflfzlyx    时间: 2011-4-12 11:03
标题: 回复 #18 2010teasiu 的帖子
是有些人不懂,继续呀,我一直支持你!我很想做一个fba的安装器,等待中……
作者: lorhorn    时间: 2011-4-12 11:57
感谢,下载学习下。
作者: cqflfzlyx    时间: 2011-4-12 13:56
休息好了,有时间继续呀!
作者: 永恒心锁    时间: 2011-4-12 15:45
等待新的代码 造福大家
作者: liaoliang    时间: 2011-4-12 15:49
精品
感谢开源,外国朋友都来了!
支持!
作者: 2011pkri    时间: 2011-4-12 15:53
不断顶,为楼主加油打气,继续关注源码。
作者: yjd    时间: 2011-4-12 15:54
看了源代码晕乎乎,完全不动nsis^_^
作者: 20100660    时间: 2011-4-12 18:35
非常感谢楼主无私奉献,等2楼fba
作者: teasiu    时间: 2011-4-12 19:51
已经写好注释了,大家再热烈点支持一下就上传吧。别让我感觉灰心啊,
不是扭扭妮妮,而是真的期待热心人收益,大家都受益。
作者: Plantsoot    时间: 2011-4-12 21:55
标题: 回复 #43 2010teasiu 的帖子
神雕兄能开源,让人佩服,菜鸟有福了。

我也可以顺便学习下。最近神雕兄出了好多不错的工具,支持下。

昨天好像通宵了?要注意身体。
作者: teasiu    时间: 2011-4-13 04:28
原帖由 Plantsoot 于 2011-4-12 21:55 发表
神雕兄能开源,让人佩服,菜鸟有福了。

我也可以顺便学习下。最近神雕兄出了好多不错的工具,支持下。

昨天好像通宵了?要注意身体。



谢谢关怀。

开源,让人进步,多好。
作者: messenger    时间: 2011-4-13 12:31
楼主无私的精神值得敬佩!
作者: Plantsoot    时间: 2011-4-13 16:11
标题: 回复 #45 2010teasiu 的帖子
开源是好,不过也有压力,就像我写的代码,很不规范,自己非科班出身,写的东西不敢登大雅之堂。
作者: teasiu    时间: 2011-4-13 16:35
原帖由 Plantsoot 于 2011-4-13 16:11 发表
开源是好,不过也有压力,就像我写的代码,很不规范,自己非科班出身,写的东西不敢登大雅之堂。


我更加是一个非专业的爱好者,我是企业管理的文科,自己玩电脑摸索出来的。。。。
作者: 20100660    时间: 2011-4-13 17:38
已收下二楼源码,等三楼的,非常感谢!佩服楼主的心胸,我对你的敬仰犹如淘淘江水,连绵不绝,又如黄河泛滥,一发不可收拾。烦请有空研究下cf大师的fba包安装器

[ 本帖最后由 20100660 于 2011-4-13 17:46 编辑 ]
作者: whitecloud    时间: 2011-4-13 19:51
真是让大家都进步呀,楼主的分享精神非常支持。。。
作者: cqflfzlyx    时间: 2011-4-14 09:24
终于等待二楼的源码,神雕其实很伟大呀!
作者: 2011bomboy    时间: 2011-4-14 10:06
再来学习一个,再来学习一个
作者: teasiu    时间: 2011-4-14 11:07
原帖由 cqflfzlyx 于 2011-4-14 09:24 发表
终于等待二楼的源码,神雕其实很伟大呀!


希望你学会以后,也能公布你的进化版让我来学习。。。。
作者: teasiu    时间: 2011-4-14 11:08
原帖由 20100660 于 2011-4-13 17:38 发表
已收下二楼源码,等三楼的,非常感谢!佩服楼主的心胸,我对你的敬仰犹如淘淘江水,连绵不绝,又如黄河泛滥,一发不可收拾。烦请有空研究下cf大师的fba包安装器


原理是一样的。都是fbinst的命令集.
作者: teasiu    时间: 2011-4-14 21:24
看来没有几个人懂这个软件的内涵。。。。郁闷。。。下载制作了的兄弟,为什么不贴一张图上来?
作者: cqflfzlyx    时间: 2011-4-15 08:27
神雕能这样做很伟大!
作者: 2010zeushe    时间: 2011-4-15 09:06
认真学习中努力实践中  支持
作者: 2011新手红    时间: 2011-4-15 09:39
好贴子,学习长见识了,支持!
作者: qyxbx    时间: 2011-4-15 10:04
这个一定要学习使用 这样我就可以改成自己的界面了
作者: awnuitfk    时间: 2011-4-15 10:37
非常感谢楼主,给这么好的东西,  还想问下楼主,程序里的图片位置大小是否可以通什么软件来改改?有没有什么软件可以在图形下修改?
作者: appben    时间: 2011-4-15 10:46
精品啊,感谢楼主分享!
作者: 2010dgnanhua    时间: 2011-4-15 10:53
楼主真是太强了,不支持下都不行。向楼主学习。。。
作者: teasiu    时间: 2011-4-15 11:44
原帖由 awnuitfk 于 2011-4-15 10:37 发表
非常感谢楼主,给这么好的东西,  还想问下楼主,程序里的图片位置大小是否可以通什么软件来改改?有没有什么软件可以在图形下修改?


PS软件。。。。
作者: awnuitfk    时间: 2011-4-15 12:02
标题: 回复 #63 2010teasiu 的帖子
原帖由 2010teasiu 于 2011-4-15 11:44 发表

原帖由 awnuitfk 于 2011-4-15 10:37 发表
非常感谢楼主,给这么好的东西,  还想问下楼主,程序里的图片位置大小是否可以通什么软件来改改?有没有什么软件可以在图形下修改?


PS软件。。。。




那个是换图片,我意思是改图片在软件中的位置。

[ 本帖最后由 awnuitfk 于 2011-4-15 12:04 编辑 ]
作者: xxhddt163    时间: 2011-4-15 13:40
学习了~!!!!!!!!!!!!!!
作者: teasiu    时间: 2011-4-16 22:11
原帖由 awnuitfk 于 2011-4-15 12:02 发表




那个是换图片,我意思是改图片在软件中的位置。



请看第二个例子的坐标描述。稍微更改即可移动到任何位置。
作者: chengchun    时间: 2011-4-16 22:33
EXE文件提示不能解压,扩展名改成RAR也不行,提示找不到压缩文件或者文件已损坏,
作者: teasiu    时间: 2011-4-16 22:40
标题: 回复 #67 chengchun 的帖子
谢谢反馈。。。也可以安装到U盘后,不要登录,直接将U盘的所有文件打包。
作者: 2011ging666    时间: 2011-4-17 09:05
正需要这样的脚本,方便我们这些拿来主义的人使用
作者: hxp888    时间: 2011-4-17 14:16
非常感谢,我照做,我fpa用的自己改的xyly的,但为什么他只认得到U盘,而认不到移动硬盘,有什么办法能让他认得到移动硬盘,谢谢!
作者: hsb2009    时间: 2011-4-17 17:32
不错,楼主继续发力..
作者: cqflfzlyx    时间: 2011-4-18 09:36
来看看第三个发布没!
作者: cqflfzlyx    时间: 2011-4-19 08:20
再次顶起来,不能沉下去!
作者: 2011zhuhao568    时间: 2011-4-20 10:48
lz你太牛了。谢谢分享!我还得慢慢学习
作者: cqflfzlyx    时间: 2011-4-20 11:04
第三个源码会发布吗?
作者: 2010ahzsm    时间: 2011-4-21 14:52
好东西,这个一定要试试,

[ 本帖最后由 2010ahzsm 于 2011-4-21 16:12 编辑 ]

3.JPG (27.42 KB, 下载次数: 249)

3.JPG

作者: 2010ahzsm    时间: 2011-4-21 16:23
等那只提起的第三个靴子……
作者: hxp888    时间: 2011-4-21 16:49
标题: 回复 #70 hxp888 的帖子
${GetDrives} "FDD" driveList ;改为${GetDrives} "ALL" driveList ;?
作者: 2010hry    时间: 2011-4-22 21:03
大力支持…
作者: 左岸麦田    时间: 2011-4-23 09:00
不错。广告位招租也不错。呵呵、
作者: lizp2020    时间: 2011-4-23 13:46
收藏慢慢学习哈,精品一定要支持。
作者: HB天意    时间: 2011-4-23 17:32
强烈支持一个,抽空研究下。
作者: HB天意    时间: 2011-4-23 19:52

谢谢你的源码。我已经做了一个并测试成功了。

以前我封装软件一直用SmartInstallMaker。但是这个软件功能太弱了。
很想自己写一个软件来安装U盘维护系统,但是对NSIS不懂,一直没有办法。
今天终于可以用上了,再次谢谢!
作者: 永恒心锁    时间: 2011-4-24 08:42
fbinst: error: primary data size too large

fbinst: error: fb mbr not initialized
我的提示这两个错误 为什么?
作者: 永恒心锁    时间: 2011-4-24 08:44
输出目录: C:\Users\ADMINI~1\AppData\Local\Temp\nsdF8A2.tmp
抽取: fbinst.exe... 100%
抽取: yhxs.fba... 100%
输出目录: C:\Users\ADMINI~1\AppData\Local\Temp\nsdF8A2.tmp
创建HDD模式的引导和复制yhxs3344系统到 N:, 请稍后
....................
yhxs3344系统已经安装到N:的隐藏区占200M

[ 本帖最后由 永恒心锁 于 2011-4-24 08:55 编辑 ]
作者: 964220    时间: 2011-4-24 08:48
真厉害。神雕大侠。 好礼。
作者: zhouaniu    时间: 2011-4-24 10:41
谢谢楼主,刚下载了,在使用当中。
作者: yanjiecao    时间: 2011-4-24 10:52
真正开放共享,强烈顶起!!!
作者: HB天意    时间: 2011-4-24 14:51
提下建议:1、界面稍难看了些。可以自定义吗?
2、不能选择移动硬盘。这个可以改变吗?
3、在U盘有隐藏分区的情况下,能否不格式化U盘而更新隐藏分区的内容?
作者: 枫工作室    时间: 2011-4-24 16:16
这个精品,一定要支持
作者: teasiu    时间: 2011-4-24 16:23
原帖由 永恒心锁 于 2011-4-24 08:42 发表
fbinst: error: primary data size too large

fbinst: error: fb mbr not initialized
我的提示这两个错误 为什么?


你的fba包大于80M了,你当然应该修改一下参数啦!
我不是已经写了注解在里面吗?为什么不认真阅读?

不过,我今天写了一个新的代码,自动判断fba包大小,并且自动修正隐藏区的数据区大小,嘿嘿,我自己都有点点佩服自己。。
作者: teasiu    时间: 2011-4-24 16:25
原帖由 yidawpf 于 2011-4-24 14:51 发表
提下建议:1、界面稍难看了些。可以自定义吗?
2、不能选择移动硬盘。这个可以改变吗?
3、在U盘有隐藏分区的情况下,能否不格式化U盘而更新隐藏分区的内容?


1、认真学习一下NSIS吧,你就知道怎么改了
2、移动硬盘请将FDD改为HDD,就可以看到了,不是有注解吗?干嘛不认真看?
3、用fbinstool更改不是更方便?
作者: HB天意    时间: 2011-4-24 17:13
原帖由 2010teasiu 于 2011-4-24 16:25 发表


1、认真学习一下NSIS吧,你就知道怎么改了
2、移动硬盘请将FDD改为HDD,就可以看到了,不是有注解吗?干嘛不认真看?
3、用fbinstool更改不是更方便?

1、今天看了下NSIS的教程,有时间学习学习。
2、如果改成HDD,U盘还可以识别吗?另外HDD你注解的是本地硬盘。这样会误把本地硬盘给格了吗?
3、FBINSTOOL是更方便。但既然用了这个东西,希望这个东西更好些。
作者: HB天意    时间: 2011-4-24 17:14
原帖由 2010teasiu 于 2011-4-24 16:23 发表


你的fba包大于80M了,你当然应该修改一下参数啦!
我不是已经写了注解在里面吗?为什么不认真阅读?

不过,我今天写了一个新的代码,自动判断fba包大小,并且自动修正隐藏区的数据区大小,嘿嘿,我自己 ...


这个代码可以公布吗?
不然每次都得修改FBA包的大小参数。有时候忘记了就麻烦了。。。。
作者: HB天意    时间: 2011-4-24 17:16
还有:LangString Iso_Text ${LANG_SIMPCHINESE} "第三步:选择您的FBA镜像文件。"

这段应该是多余的,可以删掉吧。
作者: teasiu    时间: 2011-4-24 17:16
原帖由 yidawpf 于 2011-4-24 17:13 发表

1、今天看了下NSIS的教程,有时间学习学习。
2、如果改成HDD,U盘还可以识别吗?另外HDD你注解的是本地硬盘。这样会误把本地硬盘给格了吗?
3、FBINSTOOL是更方便。但既然用了这个东西,希望这个东西更好些。


2、可以这样解决: 做多一个checkbox, 点击显示全部磁盘(请慎用),然后这个checkbox 显示ALL
作者: HB天意    时间: 2011-4-24 17:18
原帖由 2010teasiu 于 2011-4-24 17:16 发表


2、可以这样解决: 做多一个checkbox, 点击显示全部磁盘(请慎用),然后这个checkbox 显示ALL


现在刚接触NSIS,虽然还能够看懂一些。但大部分还是一头雾水。
能够麻烦你把代码写好贴出来吗?
作者: teasiu    时间: 2011-4-24 17:19
原帖由 yidawpf 于 2011-4-24 17:16 发表
还有:LangString Iso_Text ${LANG_SIMPCHINESE} "第三步:选择您的FBA镜像文件。"

这段应该是多余的,可以删掉吧。


可以删掉
作者: HB天意    时间: 2011-4-24 17:23
谢谢你的解答。期待“自动判断fba包大小,并且自动修正隐藏区的数据区大小”代码的公开。
作者: teasiu    时间: 2011-4-24 17:23
原帖由 yidawpf 于 2011-4-24 17:18 发表


现在刚接触NSIS,虽然还能够看懂一些。但大部分还是一头雾水。
能够麻烦你把代码写好贴出来吗?



类似这样的代码:

; All Drives Option
  ${NSD_CreateCheckBox} 55% 100 45% 15 "显示全部驱动盘 (小心使用)"
  Pop $AllDriveOption
  ${NSD_OnClick} $AllDriveOption ListAllDrives  

Function ListAllDrives ; Set to Display All Drives
  SendMessage $DestDriveTxt ${CB_RESETCONTENT} 0 0
  ${NSD_GetState} $AllDriveOption $DisplayAll
  ${If} $DisplayAll == ${BST_CHECKED}
  ${NSD_Check} $AllDriveOption
  ${NSD_SetText} $AllDriveOption "现在显示所有驱动盘 (小心)"
    ${GetDrives} "ALL" DrivesList ; All Drives Listed  
  ${ElseIf} $DisplayAll == ${BST_UNCHECKED}
  ${NSD_Uncheck} $AllDriveOption
  ${NSD_SetText} $AllDriveOption "显示所有驱动盘 (小心使用)"
${GetDrives} "FDD" DrivesList ; FDD+HDD reduce to FDD for removable media only
  ${EndIf}
FunctionEnd

千万不要照搬哦,要认真看懂代码才行哦




欢迎光临 无忧启动论坛 (http://bbs.wuyou.net/) Powered by Discuz! X3.3