无忧启动论坛

标题: XPLode 制作集成 Hotfix 的 Windows 安装盘的问题` [打印本页]

作者: wyt0164    时间: 2006-11-23 11:03
标题: XPLode 制作集成 Hotfix 的 Windows 安装盘的问题`
我看了置顶的新手贴中介绍XPLode 制作集成 Hotfix 的 Windows 安装盘,其中有一个问题不是很明白,利用XPLode来安装补丁,是在系统复制文件结束后运行,还是运行13分钟后运行,又或者安装完系统第一次进入桌面运行。另外利用XPLode来安装补丁是不是把补丁文件复制到硬盘运行,还是直接在光盘运行,以及运行完以后会不会把安装后的多余垃圾信息删除。

[ 本帖最后由 打狗协会理事 于 2006-11-23 06:16 PM 编辑 ]
作者: 阿非    时间: 2006-11-23 11:14
XPLode的调用,要看你采取什么方式,如果采取SVCPACK的方式,一般在安装剩余13分钟开始工作。但也有的采取把补丁打包,在13分钟的时候,其实是解包到硬盘,然后在第一次登录的时候来运行XPLode
说白了,XPLode其实是一个全自动的文件执行工具,至于运行完以后会不会把安装后的多余垃圾信息删除,要看你的补丁及其安装脚本如何了
作者: wyt0164    时间: 2006-11-23 11:18
我采用SVCPACK的方式,没有把补丁打包,可以运行。
但我一把补丁打包(我用winrar压了一个EXE的自解压包),第一次登录不会自动调出XPLode来运行,好像补丁打包要写一个注册表启动项的吧。
作者: 阿非    时间: 2006-11-23 11:23
第一次登录运行,用rar打包是不会自动运行的,你可以在winnt.sif中设置如下
[GuiRunOnce]
    Command0=%windir%\SVCPACK\XPLode.exe
注意=后面的路径,上面给的是把补丁包解压到windows\SVCPACK里面,并且XPLode.exe也在里面
作者: 阿非    时间: 2006-11-23 11:27
其实,用NSIS打包,比rar要好,压缩率大。给你个脚本示例


; 该脚本使用 HM VNISEdit 脚本编辑器向导产生

; 安装程序初始定义常量
!define PRODUCT_NAME "Windows Xp sp2 离线补丁安装包"
!define /date PRODUCT_VERSION "1.0.0.0"
!define PRODUCT_PUBLISHER "阿非"
!define PRODUCT_WEB_SITE "http://afeichai.ys168.com"
SetCompressor /SOLID lzma

; ------ MUI 现代界面定义 (1.67 版本以上兼容) ------
!include "MUI.nsh"
!include "Sections.nsh"
!include "UsefulLib.nsh"


; MUI 预定义常量
!define MUI_ABORTWARNING
!define MUI_ICON "TEMP\1.ico"

; 欢迎页面
!define MUI_WELCOMEFINISHPAGE_BITMAP "temp\1.bmp"
!insertmacro MUI_PAGE_WELCOME
; 许可协议页面
!define MUI_LICENSEPAGE_RADIOBUTTONS
!insertmacro MUI_PAGE_LICENSE "TEMP\说明.txt"
; 组件选择页面
!insertmacro MUI_PAGE_COMPONENTS
; 安装过程页面
!insertmacro MUI_PAGE_INSTFILES
; 安装完成页面
!insertmacro MUI_PAGE_FINISH

; 安装界面包含的语言设置
!insertmacro MUI_LANGUAGE "SimpChinese"

; 安装预释放文件
!insertmacro MUI_RESERVEFILE_INSTALLOPTIONS

;安装界面下画线的文字
BrandingText "Http://afeichai.ys168.com 阿非"

;声明版权
VIProductVersion "1.0.0.0"
VIAddVersionKey /LANG=2052 "ProductName" "Windows Xp sp2 离线补丁安装包"
VIAddVersionKey /LANG=2052 "CompanyName" "阿非工作室"
VIAddVersionKey /LANG=2052 "LegalTrademarks" "阿非工作室"
VIAddVersionKey /LANG=2052 "LegalCopyright" "(C) 2006 阿非工作室"
VIAddVersionKey /LANG=2052 "FileDescription" "Windows Xp sp2 离线补丁安装包"
VIAddVersionKey /LANG=2052 "FileVersion" "${PRODUCT_VERSION}"
VIAddVersionKey /LANG=2052 "阿非申明"  "仅供研究学习,请下载后24小时内删除!请勿非法使用!本人不对软件使用造成的任何后果负责!"

; ------ MUI 现代界面定义结束 ------


Name "${PRODUCT_NAME}${PRODUCT_VERSION}"
Caption "Xp补丁离线批量安装包 ${PRODUCT_VERSION} By阿非"
OutFile "KB.EXE"
InstallDir "$WINDIR\SVCPACK"
ShowInstDetails nevershow

SectionGroup /e "Windows Xp sp2 离线补丁安装包"
  Section "!Windows Xp sp2 离线补丁安装包" SEC01
  SectionIn RO
  SetOutPath "$INSTDIR\"
  SetOverwrite ifnewer
  File /r "KBS\*.*"
  SetOutPath "$INSTDIR"
  File "XPLODEREGISTRY.X4E"
  File "XPLODEFILEOPS.X4E"
  File "XPLODEEXECUTE.X4E"
  File "XPLODE.XML"
  File "XPLODE.X4D"
  File "XPLODE.EXE"
  File "CLEAN.EXE"
SectionEnd

Section /o "立即开始安装补丁" g1o1
ExecWait "$INSTDIR\XPLODE.EXE"
SectionEnd

Section "下次重启安装补丁" g1o2
WriteRegStr "HKLM" "SOFTWARE\Microsoft\Windows\CurrentVersion\RunOnce" "Expand String Value" "$INSTDIR\XPLODE.EXE"
SectionEnd
SectionGroupEnd

#-- 根据 NSIS 脚本编辑规则,所有 Function 区段必须放置在 Section 区段之后编写,以避免安装程序出现未可预知的问题。--#
Function .onInit
  StrCpy $1 ${g1o1} ; Group 1 - Option 1 is selected by default
  GetDllVersion "$SYSDIR\user32.dll" $R0 $R1
  IntOp $R2 $R0 / 0x00010000
  IntOp $R3 $R0 & 0x0000FFFF
  IntOp $R4 $R1 / 0x00010000
  IntOp $R5 $R1 & 0x0000FFFF
  StrCpy $0 "$R2$R3"
  IntCmp $0 51 +3 +1 +1
     MessageBox MB_OK|MB_ICONEXCLAMATION "本程序仅能运行于 Windows XP 操作系统!" /SD IDOK
     Quit
FunctionEnd

Function .onSelChange
  !insertmacro StartRadioButtons $1
    !insertmacro RadioButton ${g1o1}
    !insertmacro RadioButton ${g1o2}
  !insertmacro EndRadioButtons
FunctionEnd

Function .onMouseOverSection
!insertmacro MUI_DESCRIPTION_BEGIN
  !insertmacro MUI_DESCRIPTION_TEXT ${SEC01} "Windows Xp sp2 离线补丁安装包"
  !insertmacro MUI_DESCRIPTION_TEXT ${g1o1} "立即开始安装补丁,建议重启以便解压后的垃圾全部清理!"
  !insertmacro MUI_DESCRIPTION_TEXT ${g1o2} "系统重启后安装补丁"
!insertmacro MUI_DESCRIPTION_END
FunctionEnd

!define IDC_ABOUT    1300
!define IDC_LINK    1301
!define IDM_ABOUT    1

Function .onPageCallback
    ${If} $MSG = ${WM_INITDIALOG}
        Push $0
        Push $1
        Push $2
        Push $3
        ${GetDlgItemRect} $0 $1 $2 $3 $HWNDPARENT ${IDC_CANCEL}
        IntOp $0 $2 - $0
        IntOp $2 $3 - $1
        ${CreateButton} "关于(&A)" 20 $1 $0 $2 $HWNDPARENT ${IDC_ABOUT}
        IntOp $3 $0 + 30
        IntOp $1 $1 + 3
        IntOp $2 $2 - 2
        ${CreateLink} $3 $1 90 $2 $HWNDPARENT ${IDC_LINK}
        ${GetSystemMenu} $0 $HWNDPARENT
        ${AppendMenu} $0 ${MF_SEPARATOR} 0 0
        ${AppendMenu} $0 ${MF_STRING} ${IDM_ABOUT} "关于安装程序(&A)"
        Pop $3
        Pop $2
        Pop $1
        Pop $0
    ${ElseIf} $MSG = ${WM_COMMAND}
        ${If} $WPARAM = ${IDC_ABOUT}
            ${MessageBox2} `☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆$\n\
                            ☆WindowsXp sp2离线补丁安装包☆$\n\
                            ☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆$\n\
                                                          $\n\
                                                             感谢你使用这个补丁离线安装包$\n\
                                 欢迎您常来阿非共享逛逛$\n\
                                 也许有意想不到的 $\n\
                                 收获 \
                        $\n$\n                      ☆阿非☆` `关于 $(^NameDA)` ${MB_OK}|${MB_ICONINFORMATION}
        ${ElseIf} $WPARAM = ${IDC_LINK}
            ExecShell open `http://afeichai.ys168.com/`
        ${EndIf}
    ${ElseIf} $MSG = ${WM_DRAWITEM}
        ${DrawLink} `访问阿非共享` ${IDC_LINK} $LPARAM
    ${ElseIf} $MSG = ${WM_SYSCOMMAND}
        ${If} $WPARAM = ${IDM_ABOUT}
            ${MessageBox2} `阿非共享|http://afeichai.ys168.com$\n版权所有 (C) 2006 阿非$\n$\n阿非共享主页:$\nhttp://afeichai.ys168.com/` `关于安装程序` ${MB_OK}|${MB_ICONINFORMATION}
        ${EndIf}
    ${EndIf}
FunctionEnd

用这个脚本把补丁打包,在登录的时候,会自动运行XPLode.exe

[ 本帖最后由 阿非 于 2006-11-23 11:33 AM 编辑 ]
作者: wyt0164    时间: 2006-11-23 11:32
谢谢,NSIS我不会用所以选择WINRAR。现在有你的脚本真的太感谢啦。
对了,能否帮我解释一下NSIS下几种安装路径的意思吗?
例如%windir%  %TEMP% %SYSDIR%等。
作者: 阿非    时间: 2006-11-23 11:36
%windir%是NT系统文件目录,XP就是windows目录,%TEMP%是环境变量,%SYSDIR%是系统中system32
我的脚本是NSIS 2.14测试通过
作者: wyt0164    时间: 2006-11-23 11:41
又要麻烦你啦,能否详细说一下如何用你的脚本打包。
我有一个KBS目录,里面有$PLUGINSDIR   $SYSDIR    $WINDIR 三个目录。
但我用你给我的脚本,无法打包,显示错误。

[ 本帖最后由 wyt0164 于 2006-11-23 11:44 AM 编辑 ]

1.rar

1.6 KB, 下载次数: 52, 下载积分: 无忧币 -2

错误显示


作者: 阿非    时间: 2006-11-23 11:46
我给的脚本目录结构如下,其中,temp里面放有1.ico,说明.txt,1.bmp

Snap1.jpg (28.59 KB, 下载次数: 22)

Snap1.jpg

作者: 阿非    时间: 2006-11-23 11:50
上面的文件都是必须的,否则会出错!KBS里面就是你要打包的补丁(可以带子目录)
作者: wyt0164    时间: 2006-11-23 11:50
这些文件是不是放在I386\SVCPACK\目录下面的。
另外要打包成EXE,直接按一下那个XP补丁包就行了吧。
另外你能不能把你的NSI文件传上来,也许我这样复制有问题。谢谢

我没有你目录里面的clean.exe 和kb.exe
作者: 阿非    时间: 2006-11-23 11:55
原帖由 wyt0164 于 2006-11-23 11:50 AM 发表
这些文件是不是放在I386\SVCPACK\目录下面的。
另外要打包成EXE,直接按一下那个XP补丁包就行了吧。
另外你能不能把你的NSI文件传上来,也许我这样复制有问题。谢谢

我没有你目录里面的clean.exe 和kb.exe

汗,kb.exe是输出的补丁包,没有注意

[ 本帖最后由 阿非 于 2006-11-23 11:56 AM 编辑 ]

XP补丁包.rar

2.11 KB, 下载次数: 29, 下载积分: 无忧币 -2

CLEAN.rar

97.63 KB, 下载次数: 27, 下载积分: 无忧币 -2


作者: 阿非    时间: 2006-11-23 11:58
原帖由 wyt0164 于 2006-11-23 11:50 AM 发表
这些文件是不是放在I386\SVCPACK\目录下面的。

我没有你目录里面的clean.exe 和kb.exe

这些文件是随便放在哪个目录里面,打包后,把KB.EXE放到I386\SVCPACK就可以了
作者: wyt0164    时间: 2006-11-23 12:00
太感谢啦。你的那个CLEAN.exe是不是安装完补丁,自动执行的。还是需要手动运行。
我现在去测试啦,在感谢一次!!!
作者: 阿非    时间: 2006-11-23 12:01
晕,CLEAN.exe是在XPLODE.XML里面配置的
作者: wyt0164    时间: 2006-11-23 12:05
这样只有在麻烦你把你的XPLODE.XML传上来啦。
作者: 阿非    时间: 2006-11-23 12:15
看样子你还是不太懂XPLODE。我的思路是这样的,在13分钟的时候,调用XPLODE,用他来解压补丁包(当然,还可以干其他的事情)。第一次登录,再次调用XPLODE,注意,这次调用的是补丁包里面的XPLODE。XPLODE.XML的配置,你照猫画虎就可以了。NSIS打包的,加参数S即可
作者: wyt0164    时间: 2006-11-23 12:25
怎么打包后KBS目录里的文件全部跑出来啦。看图。

01.jpg (37.88 KB, 下载次数: 14)

打包时文件夹

打包时文件夹

02.jpg (79.4 KB, 下载次数: 15)

用7-zip查看压缩包

用7-zip查看压缩包

作者: 阿非    时间: 2006-11-23 13:23
这个说明7z可以打开NSIS的包。你安装,不会出去的。在系统中试试就知道了
作者: 老毛桃    时间: 2006-11-23 14:40
XPLode 集成补丁有安装速度慢、光盘占用空间大等缺点,建议看看这个帖子。

我根据那个帖子,写了个包括集成 WMP10 在内的所有 Hotfix 的全自动安装程序,测试没问题就发上来。

http://bbs.wuyou.net/forum.php?m ... &extra=page%3D2
作者: 阿非    时间: 2006-11-23 14:47
原帖由 老毛桃 于 2006-11-23 02:40 PM 发表
XPLode 集成补丁有安装速度慢、光盘占用空间大等缺点,建议看看这个帖子。

我根据那个帖子,写了个包括集成 WMP10 在内的所有 Hotfix 的全自动安装程序,测试没问题就发上来。

http://bbs.wuyou.net/viewth ...

老毛桃,这个方法和nlite集成方法类似吗?
作者: wyt0164    时间: 2006-11-23 16:36
问题已解决,非常感谢!

[ 本帖最后由 wyt0164 于 2006-11-23 05:18 PM 编辑 ]
作者: 弄潮儿-NET    时间: 2006-11-23 18:14
标题不明确
作者: Alwayshope    时间: 2007-1-1 19:01
标题: 请问INCLUDE "UsefulLib.nsh"?
请大家多指教-_-
我想请问一下,阿非的"USEFULLIB.NSH"
是自定义的吗?
能够上传一下吗?
谢谢!非常感谢!




欢迎光临 无忧启动论坛 (http://wuyou.net./) Powered by Discuz! X3.3