U盘安装PE启动通用安装器源码及教程.docx
- 文档编号:5728095
- 上传时间:2022-12-31
- 格式:DOCX
- 页数:13
- 大小:147.28KB
U盘安装PE启动通用安装器源码及教程.docx
《U盘安装PE启动通用安装器源码及教程.docx》由会员分享,可在线阅读,更多相关《U盘安装PE启动通用安装器源码及教程.docx(13页珍藏版)》请在冰豆网上搜索。
U盘安装PE启动通用安装器源码及教程
U盘安装PE启动通用安装器源码及教程--开源大礼
我写了很多的U盘启动安装软件,包括系统安装,系统维护安装的工具,受到网友大量下载和关注。
今天将其中一个最满意的作品源码公开,
帮助更多的的爱好者可以自己制作属于你自己的第一个软件。
通用一键U盘PE安装器USB2PE.exe源码
我就有这样的魄力愿意公开自己的源码,让知识快速传播出去!
我认为知识是通过开源来传承的。
教程很简单,我都在源码里加了注析,一看就懂,一学就会,一碰就做。
首先您下载一个NSIS编译器中文版,
推荐下载吧的NullsoftScriptableInstallSystem(nsis定制安装程序)V2.45汉化增强版
然后安装,然后下载我的源码,然后按下图对着nsi文件右键编译就可以生成exe安装器。
##神雕teasiu开源大礼,作者teasiu@
##让菜鸟都可以制作自己的软件
##您可以任意修改本代码,但是请保留原作者信息。
##
!
defineNAME"PE2USB"
!
defineDISTRO"WINPE"
!
defineFILENAME"PE2USB"
!
defineVERSION"0.1"
!
defineMUI_ICON"usb48.ico"
RequestExecutionLevelhighest;设置用户最高权限
SetCompressorLZMA;压缩格式
CRCCheckOn
XPStyleon;如果xp系统使用时,适应xp的风格
ShowInstDetailsshow
BrandingText"USBPE通用安装器神雕teasiu作品"
CompletedText"安装结束,欢迎使用和收藏本工具!
--神雕teasiu"
InstallButtonText"创建";将先一步按钮改名为创建
Name"${NAME}${VERSION}"
OutFile"${FILENAME}${VERSION}.exe";生成的exe文件名
!
include"nsDialogs.nsh"
!
include"MUI2.nsh"
!
include"FileFunc.nsh"
!
include"WordFunc.nsh";磁盘列表
;页面头设置
!
defineMUI_HEADERIMAGE
!
defineMUI_HEADERIMAGE_BITMAP"usb-logo2.bmp"
!
defineMUI_HEADERIMAGE_BITMAP_NOSTRETCH
!
defineMUI_HEADERIMAGE_RIGHT;右边显示logo图标,左边则改为LEFT
;定义各项变量
VarDestDriveTxt
VarDestDrive
VarDestDisk
VarLabelDrivePageText
VarLabelDriveSelect
VarFormat
VarFormatMe
VarHddmode;在这个例子里我换成了syslinux模式
VarZipmode;在这个例子里我换成了grub4dos模式
VarHddmodeMe
VarZipmodeMe
VarWarning
VarSoft
VarLink
VarLinks
VarImage
VarhImage
VarIso
VarISOFileTxt
VarISOSelection
VarTheISO
VarISOTest
VarISOFile
varBootDir
PagecustomdrivePage;只定义了一页
!
defineMUI_INSTFILESPAGE_COLORS"00FF00000000"
;Instfilespage
!
defineMUI_TEXT_INSTALLING_TITLE$(Install_Title)
!
defineMUI_TEXT_INSTALLING_SUBTITLE$(Install_SubTitle)
!
defineMUI_TEXT_FINISH_SUBTITLE$(Install_Finish_Sucess)
!
insertmacroMUI_PAGE_INSTFILES
;Languagefiles
!
insertmacroMUI_LANGUAGE"SimpChinese";仅支持中文
LangStringDrivePage_Title${LANG_SIMPCHINESE}"【PE2USB】USB通用PE安装器"
LangStringDrivePage_Title2${LANG_SIMPCHINESE}"先插入一个USB盘,然后再打开本软件进行安装."
LangStringDrivePage_Text${LANG_SIMPCHINESE}"本工具将使您的U盘完美启动."
LangStringDrivePage_Input${LANG_SIMPCHINESE}"第一步:
点击下拉菜单选择您的U盘"
LangStringSoft_Text${LANG_SIMPCHINESE}"第二步:
选择您的ISO内置的启动引导模式。
必选。
"
LangStringIso_Text${LANG_SIMPCHINESE}"第三步:
选择您的ISO镜像文件。
"
LangStringWarningPage_Text${LANG_SIMPCHINESE}"注意:
请确保U盘资料已备份。
原资料将被完全覆写并不可恢复!
"
LangStringCreation${LANG_SIMPCHINESE}"创建启动和解压ISO镜像文件到U盘,请稍后"
LangStringInstall_Title${LANG_SIMPCHINESE}"安装中${DISTRO}"
LangStringInstall_SubTitle${LANG_SIMPCHINESE}"请稍后${NAME}安装${DISTRO}到$DestDisk"
LangStringInstall_Finish_Sucess${LANG_SIMPCHINESE}"$\t${NAME}已经完成安装${DISTRO}到$DestDisk"
LangStringIsoFile${LANG_SIMPCHINESE}"ISO镜像文件|*.iso"
LangStringSyslinux_Warning${LANG_SIMPCHINESE}"一个错误($R8)发生在当安装syslinux时.$\r$\n您的USB驱动器将不可启动..$\r$\n建议您更换U盘或格式化该盘后再试一次。
"
LangStringgrub4dos_Warning${LANG_SIMPCHINESE}"一个错误($R8)发生在当安装grub4dos时.$\r$\n您的USB驱动器将不可启动..$\r$\n建议您更换U盘或格式化该盘后再试一次。
"
Function.onInit
InitPluginsDir
SetOutPath"$PLUGINSDIR";开始时将所有资源调进临时文件夹以便后面直接调用
File/r"src\*.*"
FunctionEnd
FunctiondrivePage
!
insertmacroMUI_HEADER_TEXT$(DrivePage_Title)$(DrivePage_Title2)
nsDialogs:
:
Create1018
${If}$DestDrive==""
GetDlgItem$6$HWNDPARENT1;控制下一步的句柄
EnableWindow$60;关闭下一步按钮
${EndIf}
;创建bmp广告位图
${NSD_CreateBitmap}75%020%100%""
Pop$Image
${NSD_SetImage}$Image$PLUGINSDIR\ad.bmp$hImage
${NSD_CreateLabel}0070%30$(DrivePage_Text)
Pop$LabelDrivePageText
${NSD_CreateLabel}02070%15$(DrivePage_Input)
Pop$LabelDriveSelect
SetCtlColors$LabelDriveSelect/Branding0000BD;蓝色字体
;创建下拉菜单
${NSD_CreateDroplist}04030%25""
Pop$DestDriveTxt
${NSD_OnChange}$DestDriveTxtdb_select.onchange
${GetDrives}"FDD"driveList;FDD表示仅显示移动磁盘即U盘,HDD表示显示本地磁盘即硬盘,ALL表示显示所有磁盘
${If}$DestDrive!
=""
${NSD_CB_SelectString}$DestDriveTxt$DestDrive
${EndIf}
;增加帮助或更新网址链接
${NSD_CreateLink}85%19015%14"软件更新"
Pop$Link
${NSD_OnClick}$LinkonClickMyLink
;格式化选项
${NSD_CreateButton}32%3838%22"(可选)FAT32格式化此U盘"
Pop$Format
${NSD_OnClick}$FormatFormatIt
;说明文字
${NSD_CreateLabel}07070%15$(Soft_Text);软件内容,括号里面是调回上面的中文文字
Pop$Soft
SetCtlColors$Soft/Branding0000BD;蓝色
${NSD_CreateLabel}011570%15$(Iso_Text);内容
Pop$Iso
SetCtlColors$Iso/Branding0000BD;蓝色
${NSD_CreateText}013550%20"浏览已下载的*.iso文档并选择"
Pop$ISOFileTxt
${NSD_CreateBrowseButton}53%1356520"浏览"
Pop$ISOSelection
${NSD_OnClick}$ISOSelectionISOBrowse
;磁盘启动模式选项
${NSD_CreateCheckBox}09036%15"Syslinux启动模式."
Pop$Hddmode
${NSD_Check}$Hddmode;默认此项打钩
${NSD_OnClick}$HddmodeHddmodeIt
${NSD_CreateCheckBox}38%9036%15"Grub4dos启动模式."
Pop$Zipmode
${NSD_OnClick}$ZipmodeZipmodeIt
;警示标签
${NSD_CreateLabel}019080%14$(WarningPage_Text)
Pop$Warning
EnableWindow$Format0;关闭提示
EnableWindow$Hddmode0
EnableWindow$Zipmode0
EnableWindow$ISOFileTxt0
EnableWindow$ISOSelection0
ShowWindow$Warning0
GetDlgItem$6$HWNDPARENT3
ShowWindow$60;屏蔽回去
nsDialogs:
:
Show
${NSD_FreeImage}$hImage;释放位图
FunctionEnd
FunctionISOBrowse
nsDialogs:
:
SelectFileDialogopen"$EXEDIR"$(IsoFile);如果软件同目录里有ISO文键,自动选择
Pop$TheISO
${NSD_SetText}$ISOFileTxt$TheISO
SetCtlColors$ISOFileTxt009900FFFFFF
StrCpy$ISOTest"$TheISO"
StrCpy$ISOFile"$TheISO";定义选择的镜像文件为ISOFile,以便后面解压
${NSD_SetText}$Iso"第三步完成,您的ISO镜像文件已选择."
${NSD_CreateLabel}016575%14"OK,点击创建即可"
GetDlgItem$6$HWNDPARENT1;控制下一步的句柄
EnableWindow$61;打开下一步按钮
FunctionEnd
FunctiononClickMyLink
Pop$Links;为了避免错误,pop定量
ExecShell"open"""
FunctionEnd
Functiondb_select.onchange
Pop$DestDriveTxt
${NSD_GetText}$DestDriveTxt$0
StrCpy$DestDrive"$0"
StrCpy$DestDisk"$DestDrive"-1
EnableWindow$Format1;打开提示
EnableWindow$Hddmode1
EnableWindow$Zipmode1
EnableWindow$ISOFileTxt1
EnableWindow$ISOSelection1
ShowWindow$Warning1
SetCtlColors$Warning/BrandingFF0000
CallHddmodeIt
CallZipmodeIt
FunctionEnd
;盘符列表方程
FunctiondriveList
SendMessage$DestDriveTxt${CB_ADDSTRING}0"STR:
$9"
Push1
FunctionEnd
FunctionHddmodeIt
${NSD_GetState}$Hddmode$HddmodeMe
${If}$HddmodeMe==${BST_CHECKED}
${NSD_Check}$Hddmode
StrCpy$HddmodeMe"Yes"
${NSD_SetText}$Hddmode"(已选)Syslinux启动模式"
${NSD_Uncheck}$Zipmode
StrCpy$ZipmodeMe"No"
${NSD_SetText}$Zipmode"Grub4dos启动模式"
${ElseIf}$HddmodeMe==${BST_UNCHECKED}
${NSD_Uncheck}$Hddmode
StrCpy$HddmodeMe"No"
${NSD_SetText}$Hddmode"Syslinux启动模式"
${NSD_Check}$Zipmode
StrCpy$ZipmodeMe"Yes"
${NSD_SetText}$Zipmode"(已选)Grub4dos启动模式"
${EndIf}
FunctionEnd
FunctionZipmodeIt;SetFormat2Option
${NSD_GetState}$Zipmode$ZipmodeMe
${If}$ZipmodeMe==${BST_CHECKED}
${NSD_Check}$Zipmode
StrCpy$ZipmodeMe"Yes"
${NSD_SetText}$Zipmode"(已选)Grub4dos启动模式"
${NSD_Uncheck}$Hddmode
StrCpy$HddmodeMe"No"
${NSD_SetText}$Hddmode"Syslinux启动模式"
${ElseIf}$ZipmodeMe==${BST_UNCHECKED}
${NSD_Uncheck}$Zipmode
StrCpy$ZipmodeMe"No"
${NSD_SetText}$Zipmode"Grub4dos启动模式"
${NSD_Check}$Hddmode
StrCpy$HddmodeMe"Yes"
${NSD_SetText}$Hddmode"(已选)Syslinux启动模式"
${EndIf}
FunctionEnd
FunctionFormatIt;设置格式化配置
Pop$FormatMe
MessageBoxMB_YESNO"格式化U盘可以取回全部空间,继续吗?
"IDYEStrueIDNOfalse
true:
Gotonext
false:
MessageBoxMB_OK|MB_ICONSTOP"不格式化,退出"
Abort
next:
MessageBoxMB_YESNO"真的格式化吗?
(请确保您的U盘资料已经备份,格式化将擦除U盘资料且不可恢复)"/SDIDYESIDNOfalse2
Gotonext2
false2:
MessageBoxMB_OK|MB_ICONSTOP"不格式化,退出"
Abort
next2:
;这是fbinst的格式化dos命令,详细请参考fbinst的官方说明,fbinst命令支持盘符c:
的表示形式和hd0,hd1的表示形式
nsExec:
:
ExecToLog'"cmd"/c"echoy|$PLUGINSDIR\fbinst$DestDiskformat--raw--force--fat32"'
MessageBoxMB_OK"格式化完成,恢复U盘全部空间。
"
FunctionEnd
FunctionInstallEYes
SetShellVarContextall
StrCpy$R0$DestDrive-1;将盘符后面的'\'字符截去,表示为如D:
再定义为$R0
ClearErrors
${If}$HddmodeMe=="Yes"
DetailPrint"创建syslinux的引导到$DestDisk,请稍后"
ExecWait'$PLUGINSDIR\syslinux.exe-maf$R0'$R8;这是syslinux的dos命令行,详情请参考官方说明
DetailPrint"Syslinux安装返回信息检测值=$R8,0表示成功"
Banner:
:
destroy
${If}$R8!
=0;如果返回值不是0,则弹出警告提示框
MessageBoxMB_ICONEXCLAMATION|MB_OK$(Syslinux_Warning)
DetailPrint"请更换u盘或格式化后再试一次。
"
${EndIf}
Callsyscopyfile
${ElseIf}$ZipmodeMe=="Yes"
DetailPrint"创建Grub4dos启动模式的引导到$DestDisk,请稍后"
ExecWait'$PLUGINSDIR\BOOTICE.EXE/DEVICE=$R0/mbr/install/type=grub4dos/auto'$R8;bootice支持的命令行,有很多用法,参考官方
DetailPrint"Grub4dos安装返回信息检测值=$R8,0表示成功"
Banner:
:
destroy
${If}$R8!
=0;如果返回值不是0,则弹出警告提示框
MessageBoxMB_ICONEXCLAMATION|MB_OK$(grub4dos_Warning)
DetailPrint"请更换u盘或格式化后再试一次。
"
${EndIf}
Callgrubcopyfile
${EndIf}
FunctionEnd
Functionsyscopyfile
${If}${FileExists}"$BootDir\syslinux.cfg"
;什么也不做
${ElseIf}${FileExists}"$BootDir\syslinux\syslinux.cfg"
;什么也不做
${ElseIf}${FileExists}"$BootDir\boot\syslinux\syslinux.cfg"
;什么也不做
${ElseIf}${FileExists}"$BootDir\boot\isolinux\isolinux.cfg"
Rename"$BootDir\boot\isolinux\""$BootDir\boot\syslinux\"
Rename"$BootDir\boot\syslinux\isolinux.cfg""$BootDir\boot\syslinux\syslinux.cfg"
${ElseIf}${FileExists}"$BootDir\isolinux\isolinux.cfg"
Rename"$BootDir\isolinux\""$BootDir\syslinux\"
Rename"$BootDir\syslinux\isolinux.cfg""$BootDir\syslinux\syslinux.cfg"
${ElseIf}${FileExists}"$BootDir\isolinux.cfg"
Rename"$BootDir\isolinux.cfg""$BootDir\syslinux.cfg"
${Else};上面的文件都没有时
DetailPrint"没有找到syslinux标准配置文件syslinux.cfg"
DetailPrint"可能是您安装的ISO不是使用syslinux引导,"
DetailPrint"或者是引导文件被修改为其他名字使我无法识别,"
DetailPrint"请尝试其他启动方式或者手动寻找并编辑引导文件。
"
${EndIf}
;继续检测syslinux的图形菜单,以达到版本一致
${If}${FileExists}"$BootDir\vesamenu.c32"
CopyFiles"$PLUGINSDIR\vesamenu.c32""$BootDir\vesamenu.c32"
${ElseIf}${FileExists}"$BootDir\syslinux\vesamenu.c32"
CopyFiles"$PLUGINSDIR\vesamenu.c32""$BootDir\syslinux\vesamenu.c32"
${ElseIf}${FileExists}"$BootDir\
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 安装 PE 启动 通用 源码 教程