无忧启动论坛

 找回密码
 注册
搜索
系统gho:最纯净好用系统下载站广告联系 微信:wuyouceo QQ:184822951
查看: 148241|回复: 369

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

    [复制链接]
发表于 2011-4-10 01:33:04 | 显示全部楼层 |阅读模式
本帖最后由 2010teasiu 于 2013-4-18 17:24 编辑

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

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


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

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




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

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

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

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



src.jpg
  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, 下载次数: 4561, 下载积分: 无忧币 -2

评分

参与人数 9无忧币 +253 收起 理由
2011unknown + 3 很给力!
879792799 + 5 很给力!
hehui + 5 很给力!
papago + 5 很给力!
tapy + 5 很给力!
2010iPhoenix + 20 精品文章哥们我顶你,一直想做一个安装 ...
blithewind + 10 开源精神令人感动!
天涯海角1216 + 100 非常感谢! 请继续为论坛服务!
佳佳 + 100 我很赞同

查看全部评分

 楼主| 发表于 2011-4-11 07:40:47 | 显示全部楼层
原帖由 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存在时,用内置的新版文件覆盖。
以便达到一致。避免了错误发生。
回复

使用道具 举报

 楼主| 发表于 2011-4-10 01:57:23 | 显示全部楼层
本帖最后由 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
复制代码
回复

使用道具 举报

发表于 2011-5-1 20:17:53 | 显示全部楼层
高人啊,高人,一定顶
回复

使用道具 举报

 楼主| 发表于 2011-4-10 01:56:50 | 显示全部楼层
这是一个关于安装内置fba包的安装器脚本。
slitaz5.png

  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, 下载次数: 3507, 下载积分: 无忧币 -2

点评

www.bxwx.la/b/2/2726/ 造化之门  发表于 2014-10-2 14:38

评分

参与人数 1无忧币 +10 收起 理由
blithewind + 10 开源精神令人感动!

查看全部评分

回复

使用道具 举报

发表于 2011-5-1 18:03:53 | 显示全部楼层
原帖由 2010teasiu 于 2011-5-1 17:54 发表


你没有那些文件包,当然出错啦。
比如ico文件和名字要一致。。。

那我这个提示是怎么回事呢?
回复

使用道具 举报

 楼主| 发表于 2011-5-1 17:54:43 | 显示全部楼层
原帖由 2010fengyun 于 2011-5-1 17:50 发表

测试天意的代码出现如下错误了:
宏 MUI_INTERFACE 出现错误在第 64  行
宏 MUI_PAGE_INIT 出现错误在第 3  行
宏 MUI_PAGE_INSTFILES 出现错误在第 5  行
脚本 "F:\wuyou\USBPE-installer\USBPE-install ...


你没有那些文件包,当然出错啦。
比如ico文件和名字要一致。。。
回复

使用道具 举报

发表于 2011-5-1 17:50:32 | 显示全部楼层
原帖由 yidawpf 于 2011-5-1 16:28 发表
我修改了你的代码。也生成了exe。
但NSIS编译器提示如下:
119961

请问是哪里出了错。是否影响使用?

##这是一个可以安装fba包的u盘启动安装器源码,
##资源包src里面的ty.fba是一个空文件,请用自己的 ...

测试天意的代码出现如下错误了:
宏 MUI_INTERFACE 出现错误在第 64  行
宏 MUI_PAGE_INIT 出现错误在第 3  行
宏 MUI_PAGE_INSTFILES 出现错误在第 5  行
脚本 "F:\wuyou\USBPE-installer\USBPE-installer\tianyi.nsi" 出现错误在第 56 行 -- 终止脚本处理
回复

使用道具 举报

发表于 2011-4-24 08:42:47 | 显示全部楼层
fbinst: error: primary data size too large

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

使用道具 举报

发表于 2011-4-23 19:52:49 | 显示全部楼层
sshot-4.jpg
谢谢你的源码。我已经做了一个并测试成功了。

以前我封装软件一直用SmartInstallMaker。但是这个软件功能太弱了。
很想自己写一个软件来安装U盘维护系统,但是对NSIS不懂,一直没有办法。
今天终于可以用上了,再次谢谢!
回复

使用道具 举报

发表于 2011-4-23 17:32:33 | 显示全部楼层
强烈支持一个,抽空研究下。
回复

使用道具 举报

发表于 2011-4-10 10:01:01 | 显示全部楼层
确实不顶不行了。。。谢谢分享
回复

使用道具 举报

发表于 2011-4-10 10:27:40 | 显示全部楼层
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
回复

使用道具 举报

发表于 2011-4-10 10:29:55 | 显示全部楼层
also ,

is this also depend on the same source code ?

http://bbs.wuyou.net/forum.php?m ... &extra=page%3D1
回复

使用道具 举报

 楼主| 发表于 2011-4-10 10:46:44 | 显示全部楼层
原帖由 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.
回复

使用道具 举报

发表于 2011-4-10 10:53:19 | 显示全部楼层
收藏慢慢学习哈,楼主高人啊
回复

使用道具 举报

 楼主| 发表于 2011-4-10 10:59:11 | 显示全部楼层
原帖由 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....
回复

使用道具 举报

发表于 2011-4-10 17:20:33 | 显示全部楼层
这个精品,一定要支持
回复

使用道具 举报

发表于 2011-4-10 20:22:52 | 显示全部楼层
俺是菜鸟,,进来膜拜下,慢慢学习,,,
回复

使用道具 举报

发表于 2011-4-10 20:29:40 | 显示全部楼层

这个绝对是精品@

感谢分享,楼主继续发布二三楼啊~~~
回复

使用道具 举报

发表于 2011-4-10 20:33:37 | 显示全部楼层

回复 #1 2010teasiu 的帖子

特意登录一下表达敬意!

NSIS尚未接触过,标记下
回复

使用道具 举报

发表于 2011-4-11 01:03:35 | 显示全部楼层
@ 2010teasiu

thanks for the reply . i will wait for another version as you promised.
回复

使用道具 举报

发表于 2011-4-11 07:32:12 | 显示全部楼层

回复 #1 2010teasiu 的帖子

新手问下,压缩包里面的“vesamenu.c32”文件起什么作用?
还有,非常希望楼主能够发布Fba源码学习,谢谢!
回复

使用道具 举报

发表于 2011-4-11 10:42:44 | 显示全部楼层
原帖由 <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 />
等待中!谢谢!!
回复

使用道具 举报

 楼主| 发表于 2011-4-11 10:55:34 | 显示全部楼层
原帖由 zjghjs 于 2011-4-11 10:42 发表

等待中!谢谢!!


看看反应,没有想象中的热闹,唉,有点灰心。。
回复

使用道具 举报

发表于 2011-4-11 11:15:10 | 显示全部楼层
我等待2楼fba的安装包吧,谢谢神雕啦!!!
回复

使用道具 举报

发表于 2011-4-11 14:38:42 | 显示全部楼层
这个灰常好,一定要支持
回复

使用道具 举报

发表于 2011-4-11 14:52:42 | 显示全部楼层
代码真看不懂,很强  谢谢啦
回复

使用道具 举报

发表于 2011-4-11 15:23:22 | 显示全部楼层
请问LZ:
编译好的“通用一键U盘PE安装器”哪里可以下载???
谢谢了!!!
回复

使用道具 举报

发表于 2011-4-11 17:44:43 | 显示全部楼层
这种样子的代码第一次见啊  学习了......   有点看不懂
回复

使用道具 举报

发表于 2011-4-11 17:58:03 | 显示全部楼层
收藏备用了!谢谢楼主分享!
回复

使用道具 举报

发表于 2011-4-11 18:07:29 | 显示全部楼层
非常感谢!
授人以渔!

请楼主继续努力!
回复

使用道具 举报

发表于 2011-4-11 19:49:22 | 显示全部楼层
非常感谢您的分享 强烈支持
回复

使用道具 举报

 楼主| 发表于 2011-4-11 19:52:35 | 显示全部楼层

回复 #25 天涯海角1216 的帖子

感谢支持。希望论坛能将附件转换为论坛地址,以便网友持久下载。

我这里有限制无法直接上传。
回复

使用道具 举报

发表于 2011-4-11 20:27:53 | 显示全部楼层
建议楼主添加上 usb-hdd 和 usb-zip 启动...
回复

使用道具 举报

发表于 2011-4-11 21:33:44 | 显示全部楼层
激动不已,我支持,我顶!
回复

使用道具 举报

发表于 2011-4-11 21:51:03 | 显示全部楼层
强帖。一定要顶的,再慢慢学习。
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 注册

本版积分规则

小黑屋|手机版|Archiver|捐助支持|无忧启动 ( 闽ICP备05002490号-1 )

闽公网安备 35020302032614号

GMT+8, 2024-3-29 07:01

Powered by Discuz! X3.3

© 2001-2017 Comsenz Inc.

快速回复 返回顶部 返回列表