2010fengyun 发表于 2011-4-30 02:22:56

我用VB写过这种软件,但是被360PK了。说我的是木马病毒。NSIS不知道这是什么脚本。没有研究过。友情帮顶!

2010heng 发表于 2011-4-30 17:30:38

共享是社会进步的源泉!谢谢楼主的共享精神!!

HB天意 发表于 2011-5-1 16:28:47

我修改了你的代码。也生成了exe。
但NSIS编译器提示如下:


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

##这是一个可以安装fba包的u盘启动安装器源码,
##资源包src里面的ty.fba是一个空文件,请用自己的fba包替换。
##=====================================
##本源码由teasiu@163.com创建。请保留此信息。
##=====================================
!define NAME "天意U盘维护系统"
!define DISTRO "天意U盘维护系统"
!define FILENAME "天意U盘维护系统"
!define VERSION "1.0网络增强测试版"
!define MUI_ICON "AUTORUN.ICO"
RequestExecutionLevel highest
SetCompressor LZMA
CRCCheck On
XPStyle on
ShowInstDetails show
BrandingText "天意U盘维护系统安装器"
CompletedText "安装结束,欢迎使用和收藏本工具! "
InstallButtonText "创 建"
Name "${NAME} ${VERSION}"
OutFile "${FILENAME} ${VERSION}.exe"
!include "nsDialogs.nsh"
!include "MUI2.nsh"
!include "FileFunc.nsh"
!include "WordFunc.nsh" ;DriveList
; Interface settings
!define MUI_HEADERIMAGE
!define MUI_HEADERIMAGE_BITMAP "usb-logo.bmp"
!define MUI_HEADERIMAGE_BITMAP_NOSTRETCH
!define MUI_HEADERIMAGE_RIGHT
; Drive page
Var DestDriveTxt
Var DestDrive
Var DestDisk
Var LabelDrivePageText
Var LabelDriveSelect
Var Format
Var FormatMe
Var Hddmode
Var Zipmode
Var HddmodeMe
Var ZipmodeMe
Var Warning
Var Soft
Var Link
Var Links
Var Image
Var hImage
#Page custom SetCustom LeaveCustom
Page custom drivePage

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

${NSD_CreateLabel} 0 0 70% 30 $(DrivePage_Text)
Pop $LabelDrivePageText
${NSD_CreateLabel} 0 20 70% 15 $(DrivePage_Input)
Pop $LabelDriveSelect
SetCtlColors $LabelDriveSelect /Branding 0000BD

${NSD_CreateDroplist} 0 40 30% 25 ""
Pop $DestDriveTxt
${NSD_OnChange} $DestDriveTxt db_select.onchange
${GetDrives} "FDD" driveList; FDD代表移动磁盘,本地磁盘用HDD,所有磁盘用ALL
${If} $DestDrive != ""
${NSD_CB_SelectString} $DestDriveTxt $DestDrive
${EndIf}
; Add Help Link
${NSD_CreateLink} 81% 192 15% 14 "软件更新" ; 创建一个链接地址 85%代表位置横坐标,190代表位置纵坐标,15%代表内容横坐标,14代表内容纵坐标
Pop $Link
${NSD_OnClick} $Link onClickMyLink
; Format Drive Option
${NSD_CreateButton} 32% 38 36% 22 "(可选)FAT32格式化此U盘"
Pop $Format
${NSD_OnClick} $Format FormatIt
; Soft Label
${NSD_CreateLabel} 0 70 70% 15 $(Soft_Text) ;软件内容 0代表位置横坐标,70代表位置纵坐标,70%代表内容横坐标,15代表内容纵坐标
Pop $Soft
SetCtlColors $Soft /Branding 0000BD

; 磁盘启动模式选项
${NSD_CreateCheckBox} 0 90 36% 15 "HDD启动模式."
Pop $Hddmode
${NSD_Check} $Hddmode
${NSD_OnClick} $Hddmode HddmodeIt
${NSD_CreateCheckBox} 38% 90 36% 15 "ZIP启动模式."
Pop $Zipmode
${NSD_OnClick} $Zipmode ZipmodeIt
; Warning Label
${NSD_CreateLabel} 0 190 80% 14 $(WarningPage_Text)
Pop $Warning
EnableWindow $Format 0
EnableWindow $Hddmode 0
EnableWindow $Zipmode 0
ShowWindow $Warning 0
GetDlgItem $6 $HWNDPARENT 3
ShowWindow $6 0 ; Disable Back
nsDialogs::Show
${NSD_FreeImage} $hImage
FunctionEnd

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

Function db_select.onchange
Pop $DestDriveTxt
${NSD_GetText} $DestDriveTxt $0
StrCpy $DestDrive "$0"
StrCpy $DestDisk "$DestDrive" -1
GetDlgItem $6 $HWNDPARENT 1 ; Get "Next" control handle
EnableWindow $6 1 ; enable "Next" control
EnableWindow $Format 1
EnableWindow $Hddmode 1
EnableWindow $Zipmode 1
ShowWindow $Warning 1
SetCtlColors $Warning /Branding FF0000
Call HddmodeIt
Call ZipmodeIt
FunctionEnd
Function driveList ; 磁盘列表,表示形式为盘符CDE等
SendMessage $DestDriveTxt ${CB_ADDSTRING} 0 "STR:$9"
Push 1
FunctionEnd
;下面2个方程的意思是:无论用户怎么点击,都必须要选中一个
Function HddmodeIt
${NSD_GetState} $Hddmode $HddmodeMe

${If} $HddmodeMe == ${BST_CHECKED}
${NSD_Check} $Hddmode
StrCpy $HddmodeMe "Yes"
${NSD_SetText} $Hddmode "(已选)HDD启动模式"
${NSD_Uncheck} $Zipmode
StrCpy $ZipmodeMe "No"
${NSD_SetText} $Zipmode "ZIP启动模式"

${ElseIf} $HddmodeMe == ${BST_UNCHECKED}
${NSD_Uncheck} $Hddmode
StrCpy $HddmodeMe "No"
${NSD_SetText} $Hddmode "HDD启动模式"
${NSD_Check} $Zipmode
StrCpy $ZipmodeMe "Yes"
${NSD_SetText} $Zipmode "(已选)ZIP启动模式"
${EndIf}
FunctionEnd
Function ZipmodeIt ; Set Format Option
${NSD_GetState} $Zipmode $ZipmodeMe
${If} $ZipmodeMe == ${BST_CHECKED}
${NSD_Check} $Zipmode
StrCpy $ZipmodeMe "Yes"
${NSD_SetText} $Zipmode "(已选)ZIP启动模式"
${NSD_Uncheck} $Hddmode
StrCpy $HddmodeMe "No"
${NSD_SetText} $Hddmode "HDD启动模式"
${ElseIf} $ZipmodeMe == ${BST_UNCHECKED}
${NSD_Uncheck} $Zipmode
StrCpy $ZipmodeMe "No"
${NSD_SetText} $Zipmode "ZIP启动模式"
${NSD_Check} $Hddmode
StrCpy $HddmodeMe "Yes"
${NSD_SetText} $Hddmode "(已选)HDD启动模式"
${EndIf}
FunctionEnd
Function FormatIt ; Set Format Option这里增加询问框,更加人性化
Pop $FormatMe
MessageBox MB_YESNO "格式化U盘可以取回全部空间,继续吗?" IDYES true IDNO false
true:
Goto next
false:
MessageBox MB_OK|MB_ICONSTOP "不格式化,退出"
Abort
next:
MessageBox MB_YESNO "真的格式化吗?(请确保您的U盘资料已经备份,格式化将擦除U盘资料且不可恢复)" /SD IDYES IDNO false2
Goto next2
false2:
MessageBox MB_OK|MB_ICONSTOP "不格式化,退出"
Abort
next2:
InitPluginsDir
File /oname=$PLUGINSDIR\fbinst.exe "src\fbinst.exe" ;调用一下src文件夹里面的fbinst.exe用于格式化
nsExec::ExecToLog '"cmd" /c "echo y|$PLUGINSDIR\fbinst $DestDisk format --raw --force --fat32"'
MessageBox MB_OK "格式化完成,恢复U盘全部空间。"
FunctionEnd
Function InstallEYes
InitPluginsDir
SetOutPath "$PLUGINSDIR"
File /r "src\*.*" ;文件夹src里面必须包含2个文件,fbinst.exe和你的fba包,在这个例子里名字为ty.fba,下面要相对应名字
${If} $HddmodeMe == "Yes"
DetailPrint "创建HDD模式的引导和复制天意U盘维护系统到 $DestDisk, 请稍后"
;下面这段请根据您的fba包大小来填写UD扩展分区的大小extended ?m,UD主分区默认大小是8m,否则会出现安装错误。
;fba包目前使用fbinstool工具比较方便,假如你很掌握fbinst命令,也完全可以使用命令在这里创建fba包然后安装它,写起来比较复杂。
nsExec::ExecToLog '"cmd" /c "echo y|$PLUGINSDIR\fbinst $DestDisk format --extended 267m --force --align --primary 8m --archive $PLUGINSDIR\ty.fba"'
DetailPrint "天意U盘维护系统已经安装到$DestDisk的隐藏区占275M"
${ElseIf} $ZipmodeMe == "Yes"
DetailPrint "创建Zip模式的引导和复制天意U盘维护系统到 $DestDisk, 请稍后"
nsExec::ExecToLog '"cmd" /c "echo y|$PLUGINSDIR\fbinst $DestDisk format --extended 267m --force --zip --align --primary 8m --archive $PLUGINSDIR\ty.fba"'
DetailPrint "天意U盘维护系统zip模式已经安装到$DestDisk的隐藏区占275M"
${EndIf}
FunctionEnd
Section "Install" main
Call InstallEYes ;指令安装进程程式
nsExec::ExecToLog '"cmd" /c "echo y|$PLUGINSDIR\fbinst $DestDisk pack"' ;安装完成后整理碎片
SectionEnd

HB天意 发表于 2011-5-1 16:37:55



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

继续测试中。

2010fengyun 发表于 2011-5-1 17:02:09

原帖由 yidawpf 于 2011-5-1 16:28 发表 http://bbs.wuyou.net/images/common/back.gif
我修改了你的代码。也生成了exe。
但NSIS编译器提示如下:
119961

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

##这是一个可以安装fba包的u盘启动安装器源码,
##资源包src里面的ty.fba是一个空文件,请用自己的 ...
      能用应该问题不大,我也有遇到类似提示的,不过还是能用。按图片提示好像是脚本第8行。具体情况期待楼主解决一下,我也想知道!关注!

2010fengyun 发表于 2011-5-1 17:04:47

一键U盘工作室的我见过,效果很不错,而且看起来很人性化,那个作者说自己是用VC+写的,难道他也是用这个NSIS安装软件程序制作的?

teasiu 发表于 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 编辑 ]

HB天意 发表于 2011-5-1 17:29:11

原帖由 2010teasiu 于 2011-5-1 17:14 发表 http://bbs.wuyou.net/images/common/back.gif
已经修复了几处bug,请看最新的源码发布地址。

在变量里加一行
Var dialog


Function drivePage
!insertmacro MUI_HEADER_TEXT $(DrivePage_Title) $(DrivePage_Title2)
nsDialogs::Create 101 ...
不知道加Var dialog
有什么作用?

HB天意 发表于 2011-5-1 17:30:30

原帖由 yidawpf 于 2011-5-1 16:28 发表 http://bbs.wuyou.net/images/common/back.gif
我修改了你的代码。也生成了exe。
但NSIS编译器提示如下:
119961

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

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

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

2010fengyun 发表于 2011-5-1 17:44:57

原帖由 2010teasiu 于 2011-5-1 17:14 发表 http://bbs.wuyou.net/images/common/back.gif
已经修复了几处bug,请看最新的源码发布地址。

在变量里加一行
Var dialog


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

2010fengyun 发表于 2011-5-1 17:50:32

原帖由 yidawpf 于 2011-5-1 16:28 发表 http://bbs.wuyou.net/images/common/back.gif
我修改了你的代码。也生成了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 行 -- 终止脚本处理

teasiu 发表于 2011-5-1 17:54:43

原帖由 2010fengyun 于 2011-5-1 17:50 发表 http://bbs.wuyou.net/images/common/back.gif

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

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

HB天意 发表于 2011-5-1 18:03:53

原帖由 2010teasiu 于 2011-5-1 17:54 发表 http://bbs.wuyou.net/images/common/back.gif


你没有那些文件包,当然出错啦。
比如ico文件和名字要一致。。。
那我这个提示是怎么回事呢?

2010yzxwxl 发表于 2011-5-1 20:17:53

高人啊,高人,一定顶

2010fengyun 发表于 2011-5-3 12:50:31

原帖由 2010teasiu 于 2011-5-1 17:54 发表 http://bbs.wuyou.net/images/common/back.gif


你没有那些文件包,当然出错啦。
比如ico文件和名字要一致。。。
宏 MUI_INTERFACE 出现错误在64行
。。。。。。
请教一下,这些是宏MUI..是什么文件包?在哪有呢?谢了!

2010yulaijiang 发表于 2011-5-3 20:11:22

感谢神雕大侠分享这些知识使我们这些小白也可以做出自己的程序

135956 发表于 2011-5-4 16:02:00

支持开源。不顶不行啊

HB天意 发表于 2011-5-4 16:59:48





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

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

szfhx 发表于 2011-5-7 11:15:22

http://bbs.wuyou.net/forum.php?mod=viewthread&tid=191252&extra=page%3D3&page=1

安装内置fba包的安装器脚本。

不错

lorhorn 发表于 2011-5-8 15:39:52

太感谢楼主了。      测试并做了三个维护盘 。





papago 发表于 2011-5-8 17:13:42

神雕大侠,今年你最给力啊,支持一下

ttt0001 发表于 2011-5-9 07:02:16

这个一定要支持的!!!!!!

2010dgnanhua 发表于 2011-5-9 15:00:43

谢谢楼主源码,也谢谢楼主的无私!

本人的成品图:


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

lorhorn 发表于 2011-5-11 21:46:19

那个“(可选)FAT32格式化此U盘”按钮,要先进行格式化(图1)   否则,会有出错提示(图2) 。 也就是说,这不是(可选项)。


图1:




图2:

cycyc 发表于 2011-5-12 17:42:43

没说的,绝对精品。…………………………

来顺祥 发表于 2011-5-15 13:41:40

回复 #2 2010teasiu 的帖子

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

ntsyh 发表于 2011-5-15 13:59:41

楼主和天意的最新作品版本是?下载地址?

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

adtt520 发表于 2011-5-16 22:58:43

经我测试,无发执行安装,在安装盘就找不到东西,而且U盘空间就没有变法,!请楼主查看,!

webshow 发表于 2011-5-30 11:35:30

可以适当的定制自己的专属USB制作器。

babytoo 发表于 2011-5-30 15:01:06

在无忧混了些年头了,可对启动这玩意还是不懂
页: 1 2 3 4 [5] 6 7 8 9 10 11 12 13
查看完整版本: 通用一键U盘PE安装器脚本源码及教程--开源大礼(已发布至3个)★★★★★