无忧启动论坛

 找回密码
 注册
搜索
最纯净的「微PE装机优盘」UEPON大师作品系统gho:最纯净好用系统下载站数据恢复、数据保护、视频编辑
Win To Go 极致利器(IXUNCIS固态U盘)无忧启动网成立20周年!广告联系 QQ:184822951 微信:wuyouceo
楼主: teasiu

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

    [复制链接]
发表于 2011-4-30 02:22:56 | 显示全部楼层
我用VB写过这种软件,但是被360PK了。说我的是木马病毒。NSIS不知道这是什么脚本。没有研究过。友情帮顶!
回复

使用道具 举报

发表于 2011-4-30 17:30:38 | 显示全部楼层
共享是社会进步的源泉!谢谢楼主的共享精神!!
回复

使用道具 举报

发表于 2011-5-1 16:28:47 | 显示全部楼层
我修改了你的代码。也生成了exe。
但NSIS编译器提示如下:
sshot-1.jpg

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

  1. ##这是一个可以安装fba包的u盘启动安装器源码,
  2. ##资源包src里面的ty.fba是一个空文件,请用自己的fba包替换。
  3. ##=====================================
  4. ##本源码由teasiu@163.com创建。请保留此信息。
  5. ##=====================================
  6. !define NAME "天意U盘维护系统"
  7. !define DISTRO "天意U盘维护系统"
  8. !define FILENAME "天意U盘维护系统"
  9. !define VERSION "1.0网络增强测试版"
  10. !define MUI_ICON "AUTORUN.ICO"
  11. RequestExecutionLevel highest
  12. SetCompressor LZMA
  13. CRCCheck On
  14. XPStyle on
  15. ShowInstDetails show
  16. BrandingText "天意U盘维护系统安装器"
  17. CompletedText "安装结束,欢迎使用和收藏本工具! "
  18. InstallButtonText "创 建"
  19. Name "${NAME} ${VERSION}"
  20. OutFile "${FILENAME} ${VERSION}.exe"
  21. !include "nsDialogs.nsh"
  22. !include "MUI2.nsh"
  23. !include "FileFunc.nsh"
  24. !include "WordFunc.nsh" ;DriveList
  25. ; Interface settings
  26. !define MUI_HEADERIMAGE
  27. !define MUI_HEADERIMAGE_BITMAP "usb-logo.bmp"
  28. !define MUI_HEADERIMAGE_BITMAP_NOSTRETCH
  29. !define MUI_HEADERIMAGE_RIGHT
  30. ; Drive page
  31. Var DestDriveTxt
  32. Var DestDrive
  33. Var DestDisk
  34. Var LabelDrivePageText
  35. Var LabelDriveSelect
  36. Var Format
  37. Var FormatMe
  38. Var Hddmode
  39. Var Zipmode
  40. Var HddmodeMe
  41. Var ZipmodeMe
  42. Var Warning
  43. Var Soft
  44. Var Link
  45. Var Links
  46. Var Image
  47. Var hImage
  48. #Page custom SetCustom LeaveCustom
  49. Page custom drivePage

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

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

  128. Function onClickMyLink
  129.   Pop $Links ; pop something to prevent corruption
  130.   ExecShell "open" "http://www.winpe.cc"
  131. FunctionEnd

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

使用道具 举报

发表于 2011-5-1 16:37:55 | 显示全部楼层
sshot-1.jpg

附一张效果图。那个自动识别大小功能还没有搞定。
太菜了,没有办法。

继续测试中。
回复

使用道具 举报

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

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

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

      能用应该问题不大,我也有遇到类似提示的,不过还是能用。按图片提示好像是脚本第8行。具体情况期待楼主解决一下,我也想知道!关注!
回复

使用道具 举报

发表于 2011-5-1 17:04:47 | 显示全部楼层
一键U盘工作室的我见过,效果很不错,而且看起来很人性化,那个作者说自己是用VC+写的,难道他也是用这个NSIS安装软件程序制作的?
回复

使用道具 举报

 楼主| 发表于 2011-5-1 17:14:19 | 显示全部楼层
已经修复了几处bug,请看最新的源码发布地址。

在变量里加一行
Var dialog


Function drivePage
  !insertmacro MUI_HEADER_TEXT $(DrivePage_Title) $(DrivePage_Title2)
  nsDialogs::Create 1018

下面加一句
pop dialog

[ 本帖最后由 2010teasiu 于 2011-5-1 17:16 编辑 ]
回复

使用道具 举报

发表于 2011-5-1 17:29:11 | 显示全部楼层
原帖由 2010teasiu 于 2011-5-1 17:14 发表
已经修复了几处bug,请看最新的源码发布地址。

在变量里加一行
Var dialog


Function drivePage
  !insertmacro MUI_HEADER_TEXT $(DrivePage_Title) $(DrivePage_Title2)
  nsDialogs::Create 101 ...

不知道加Var dialog
有什么作用?
回复

使用道具 举报

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

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

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


那位能够帮我把自动识别fba大小加进去。自己试了许多遍搞不定。
回复

使用道具 举报

发表于 2011-5-1 17:44:57 | 显示全部楼层
原帖由 2010teasiu 于 2011-5-1 17:14 发表
已经修复了几处bug,请看最新的源码发布地址。

在变量里加一行
Var dialog


Function drivePage
  !insertmacro MUI_HEADER_TEXT $(DrivePage_Title) $(DrivePage_Title2)
  nsDialogs::Create 101 ...

      谢谢楼主的无私,刚测试了您的最新0.7版的NSIS代码,并做了调试,功能是已经比较完善了!不过在容错上可以再改进下,比如如果我的menu.lst,fba,ISO文件无效时,如果能进行友情提示,那就更完美了!还有就是能先模拟启动型,对于那些不能启动的情况多进行事先判断,那就太绝了,纯建议,可惜不会这类脚本,看不太懂,只会做些简单的测试!
回复

使用道具 举报

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


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

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

使用道具 举报

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

使用道具 举报

发表于 2011-5-3 12:50:31 | 显示全部楼层
原帖由 2010teasiu 于 2011-5-1 17:54 发表


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

宏 MUI_INTERFACE 出现错误在64行
。。。。。。
请教一下,这些是宏MUI..是什么文件包?
在哪有呢?谢了!
回复

使用道具 举报

发表于 2011-5-3 20:11:22 | 显示全部楼层
感谢神雕大侠分享这些知识使我们这些小白也可以做出自己的程序
回复

使用道具 举报

发表于 2011-5-4 16:02:00 | 显示全部楼层
支持开源。不顶不行啊
回复

使用道具 举报

发表于 2011-5-4 16:59:48 | 显示全部楼层
sshot-1.jpg
sshot-2.jpg
sshot-4.jpg

来感谢下神雕大侠。在他的源码和指导下,我成功的实现了把FBA安装到移动硬盘功能和自动识别FBA大小功能。

PS:最后一张图提示错误,那是因为我测试安装到硬盘而出现的。
实际上是没有问题的。
回复

使用道具 举报

发表于 2011-5-7 11:15:22 | 显示全部楼层
回复

使用道具 举报

发表于 2011-5-8 15:39:52 | 显示全部楼层
太感谢楼主了。      测试并做了三个维护盘 。


2.JPG


1.JPG
回复

使用道具 举报

发表于 2011-5-8 17:13:42 | 显示全部楼层
神雕大侠,今年你最给力啊,支持一下
回复

使用道具 举报

发表于 2011-5-9 07:02:16 | 显示全部楼层
这个一定要支持的!!!!!!
回复

使用道具 举报

发表于 2011-5-9 15:00:43 | 显示全部楼层
谢谢楼主源码,也谢谢楼主的无私!

本人的成品图:
主界面.jpg

[ 本帖最后由 2010dgnanhua 于 2011-5-16 18:17 编辑 ]
回复

使用道具 举报

发表于 2011-5-11 21:46:19 | 显示全部楼层
那个“(可选)FAT32格式化此U盘”按钮,要先进行格式化(图1)     否则,会有出错提示(图2) 。 也就是说,这不是(可选项)。


图1:
u错1.JPG



图2:
u错.JPG
回复

使用道具 举报

发表于 2011-5-12 17:42:43 | 显示全部楼层
没说的,绝对精品。…………………………
回复

使用道具 举报

发表于 2011-5-15 13:41:40 | 显示全部楼层

回复 #2 2010teasiu 的帖子

满心欢喜,收下大礼,如此精品,必须顶起!
回复

使用道具 举报

发表于 2011-5-15 13:59:41 | 显示全部楼层
楼主和天意的最新作品版本是?下载地址?

[ 本帖最后由 ntsyh 于 2011-5-15 14:09 编辑 ]
回复

使用道具 举报

发表于 2011-5-16 22:58:43 | 显示全部楼层
经我测试,无发执行安装,在安装盘就找不到东西,而且U盘空间就没有变法,!请楼主查看,!
回复

使用道具 举报

发表于 2011-5-30 11:35:30 | 显示全部楼层
可以适当的定制自己的专属USB制作器。
回复

使用道具 举报

发表于 2011-5-30 15:01:06 | 显示全部楼层
在无忧混了些年头了,可对启动这玩意还是不懂
回复

使用道具 举报

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

本版积分规则

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

闽公网安备 35020302032614号

GMT+8, 2021-2-25 10:06

Powered by Discuz! X3.3

© 2001-2017 Comsenz Inc.

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