U盘安装PE启动通用安装器源码及教程.docx

上传人:b****5 文档编号:5728095 上传时间:2022-12-31 格式:DOCX 页数:13 大小:147.28KB
下载 相关 举报
U盘安装PE启动通用安装器源码及教程.docx_第1页
第1页 / 共13页
U盘安装PE启动通用安装器源码及教程.docx_第2页
第2页 / 共13页
U盘安装PE启动通用安装器源码及教程.docx_第3页
第3页 / 共13页
U盘安装PE启动通用安装器源码及教程.docx_第4页
第4页 / 共13页
U盘安装PE启动通用安装器源码及教程.docx_第5页
第5页 / 共13页
点击查看更多>>
下载资源
资源描述

U盘安装PE启动通用安装器源码及教程.docx

《U盘安装PE启动通用安装器源码及教程.docx》由会员分享,可在线阅读,更多相关《U盘安装PE启动通用安装器源码及教程.docx(13页珍藏版)》请在冰豆网上搜索。

U盘安装PE启动通用安装器源码及教程.docx

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\

展开阅读全文
相关资源
猜你喜欢
相关搜索

当前位置:首页 > 医药卫生 > 基础医学

copyright@ 2008-2022 冰豆网网站版权所有

经营许可证编号:鄂ICP备2022015515号-1