Index: /DRBLLiveHelper/AUTHORS.txt
===================================================================
--- /DRBLLiveHelper/AUTHORS.txt	(revision 33)
+++ /DRBLLiveHelper/AUTHORS.txt	(revision 33)
@@ -0,0 +1,4 @@
+COMPANY: NCHC 
+ClonezillaLive: Steven
+ClonezillaLive Installation Program:  Sunny
+EMAIL: sunny3ni@nchc.org.tw
Index: /DRBLLiveHelper/BootPage.frm
===================================================================
--- /DRBLLiveHelper/BootPage.frm	(revision 33)
+++ /DRBLLiveHelper/BootPage.frm	(revision 33)
@@ -0,0 +1,165 @@
+VERSION 5.00
+Object = "{0D452EE1-E08F-101A-852E-02608C4D0BB4}#2.0#0"; "FM20.DLL"
+Begin VB.Form BootPage 
+   BackColor       =   &H00FFFFFF&
+   Caption         =   "DRBL Helper"
+   ClientHeight    =   1935
+   ClientLeft      =   4305
+   ClientTop       =   5565
+   ClientWidth     =   7560
+   Icon            =   "BootPage.frx":0000
+   LinkTopic       =   "Form1"
+   MaxButton       =   0   'False
+   ScaleHeight     =   1935
+   ScaleWidth      =   7560
+   Begin MSForms.CommandButton cmdExit 
+      Height          =   375
+      Left            =   6240
+      TabIndex        =   4
+      Top             =   1440
+      Width           =   1215
+      Caption         =   "Exit"
+      Size            =   "2143;661"
+      FontName        =   "·s²Ó©úÅé"
+      FontHeight      =   180
+      FontCharSet     =   136
+      FontPitchAndFamily=   34
+      ParagraphAlign  =   3
+   End
+   Begin MSForms.CommandButton cmdPrevious 
+      Height          =   375
+      Left            =   4920
+      TabIndex        =   3
+      Top             =   1440
+      Width           =   1215
+      Caption         =   "Previous"
+      Size            =   "2143;661"
+      FontName        =   "·s²Ó©úÅé"
+      FontHeight      =   180
+      FontCharSet     =   136
+      FontPitchAndFamily=   34
+      ParagraphAlign  =   3
+   End
+   Begin MSForms.CommandButton cmdRun 
+      Height          =   375
+      Left            =   2160
+      TabIndex        =   2
+      Top             =   720
+      Width           =   3975
+      Caption         =   "Make USB flash drive bootable"
+      Size            =   "7011;661"
+      FontName        =   "·s²Ó©úÅé"
+      FontHeight      =   180
+      FontCharSet     =   136
+      FontPitchAndFamily=   34
+      ParagraphAlign  =   3
+   End
+   Begin MSForms.Label lbl2 
+      Height          =   255
+      Left            =   4200
+      TabIndex        =   1
+      Top             =   240
+      Width           =   1215
+      ForeColor       =   16711680
+      BackColor       =   16777215
+      VariousPropertyBits=   8388627
+      Size            =   "2143;450"
+      FontName        =   "·s²Ó©úÅé"
+      FontHeight      =   180
+      FontCharSet     =   136
+      FontPitchAndFamily=   34
+   End
+   Begin MSForms.Label lbl1 
+      Height          =   495
+      Left            =   2160
+      TabIndex        =   0
+      Top             =   240
+      Width           =   1695
+      ForeColor       =   12632064
+      BackColor       =   16777215
+      VariousPropertyBits=   8388627
+      Caption         =   "USB flash drive"
+      Size            =   "2990;873"
+      FontName        =   "·s²Ó©úÅé"
+      FontHeight      =   180
+      FontCharSet     =   136
+      FontPitchAndFamily=   34
+   End
+   Begin VB.Image Image1 
+      Height          =   1935
+      Left            =   0
+      Picture         =   "BootPage.frx":0CCA
+      Stretch         =   -1  'True
+      Top             =   0
+      Width           =   1935
+   End
+End
+Attribute VB_Name = "BootPage"
+Attribute VB_GlobalNameSpace = False
+Attribute VB_Creatable = False
+Attribute VB_PredeclaredId = True
+Attribute VB_Exposed = False
+Private Sub cmdExit_Click()
+
+    
+    If InstallPage.Visible = False Then
+        Unload InstallPage
+    End If
+    
+    If FormatPage.Visible = False Then
+        Unload FormatPage
+    End If
+    
+    If LanguagePage.Visible = False Then
+        Unload LanguagePage
+    End If
+    
+    Unload Me
+End Sub
+
+Private Sub cmdPrevious_Click()
+    Me.Hide
+    InstallPage.Show
+End Sub
+
+Private Sub cmdRun_Click()
+    'Create Boot Disk
+    Dim args As String
+    Dim strCmd As String
+         
+    args = "-s " & GetDriveID & ": "
+    strCmd = """" & G_LibPath & "syslinux.exe"" " & args
+    ExecCmd strCmd
+    ReadyDialog.lblMsg.Caption = GetString(11)
+    
+    AlwaysOnTop ReadyDialog, True
+    ReadyDialog.Show
+    
+    
+End Sub
+
+
+Private Sub Form_Load()
+    Me.Top = FormatPage.Top
+    Me.Left = FormatPage.Left
+   SetLocale
+End Sub
+
+Public Sub SetLocale()
+    lbl2.Caption = GetDriveID
+
+    '
+    If (LoadLocalizedResources) Then
+       ' Pull a string resource out of a local resource
+       ' object for demonstration purposes.
+       lbl1.Caption = GetString(5)
+       cmdRun.Caption = GetString(6)
+       cmdPrevious.Caption = GetString(16)
+       cmdExit.Caption = GetString(4)
+       'Me.Caption = GetString()
+    End If
+End Sub
+
+Private Sub Form_Unload(Cancel As Integer)
+    cmdExit_Click
+End Sub
Index: /DRBLLiveHelper/COPYING.txt
===================================================================
--- /DRBLLiveHelper/COPYING.txt	(revision 33)
+++ /DRBLLiveHelper/COPYING.txt	(revision 33)
@@ -0,0 +1,339 @@
+		    GNU GENERAL PUBLIC LICENSE
+		       Version 2, June 1991
+
+ Copyright (C) 1989, 1991 Free Software Foundation, Inc.,
+ 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA
+ Everyone is permitted to copy and distribute verbatim copies
+ of this license document, but changing it is not allowed.
+
+			    Preamble
+
+  The licenses for most software are designed to take away your
+freedom to share and change it.  By contrast, the GNU General Public
+License is intended to guarantee your freedom to share and change free
+software--to make sure the software is free for all its users.  This
+General Public License applies to most of the Free Software
+Foundation's software and to any other program whose authors commit to
+using it.  (Some other Free Software Foundation software is covered by
+the GNU Lesser General Public License instead.)  You can apply it to
+your programs, too.
+
+  When we speak of free software, we are referring to freedom, not
+price.  Our General Public Licenses are designed to make sure that you
+have the freedom to distribute copies of free software (and charge for
+this service if you wish), that you receive source code or can get it
+if you want it, that you can change the software or use pieces of it
+in new free programs; and that you know you can do these things.
+
+  To protect your rights, we need to make restrictions that forbid
+anyone to deny you these rights or to ask you to surrender the rights.
+These restrictions translate to certain responsibilities for you if you
+distribute copies of the software, or if you modify it.
+
+  For example, if you distribute copies of such a program, whether
+gratis or for a fee, you must give the recipients all the rights that
+you have.  You must make sure that they, too, receive or can get the
+source code.  And you must show them these terms so they know their
+rights.
+
+  We protect your rights with two steps: (1) copyright the software, and
+(2) offer you this license which gives you legal permission to copy,
+distribute and/or modify the software.
+
+  Also, for each author's protection and ours, we want to make certain
+that everyone understands that there is no warranty for this free
+software.  If the software is modified by someone else and passed on, we
+want its recipients to know that what they have is not the original, so
+that any problems introduced by others will not reflect on the original
+authors' reputations.
+
+  Finally, any free program is threatened constantly by software
+patents.  We wish to avoid the danger that redistributors of a free
+program will individually obtain patent licenses, in effect making the
+program proprietary.  To prevent this, we have made it clear that any
+patent must be licensed for everyone's free use or not licensed at all.
+
+  The precise terms and conditions for copying, distribution and
+modification follow.
+
+		    GNU GENERAL PUBLIC LICENSE
+   TERMS AND CONDITIONS FOR COPYING, DISTRIBUTION AND MODIFICATION
+
+  0. This License applies to any program or other work which contains
+a notice placed by the copyright holder saying it may be distributed
+under the terms of this General Public License.  The "Program", below,
+refers to any such program or work, and a "work based on the Program"
+means either the Program or any derivative work under copyright law:
+that is to say, a work containing the Program or a portion of it,
+either verbatim or with modifications and/or translated into another
+language.  (Hereinafter, translation is included without limitation in
+the term "modification".)  Each licensee is addressed as "you".
+
+Activities other than copying, distribution and modification are not
+covered by this License; they are outside its scope.  The act of
+running the Program is not restricted, and the output from the Program
+is covered only if its contents constitute a work based on the
+Program (independent of having been made by running the Program).
+Whether that is true depends on what the Program does.
+
+  1. You may copy and distribute verbatim copies of the Program's
+source code as you receive it, in any medium, provided that you
+conspicuously and appropriately publish on each copy an appropriate
+copyright notice and disclaimer of warranty; keep intact all the
+notices that refer to this License and to the absence of any warranty;
+and give any other recipients of the Program a copy of this License
+along with the Program.
+
+You may charge a fee for the physical act of transferring a copy, and
+you may at your option offer warranty protection in exchange for a fee.
+
+  2. You may modify your copy or copies of the Program or any portion
+of it, thus forming a work based on the Program, and copy and
+distribute such modifications or work under the terms of Section 1
+above, provided that you also meet all of these conditions:
+
+    a) You must cause the modified files to carry prominent notices
+    stating that you changed the files and the date of any change.
+
+    b) You must cause any work that you distribute or publish, that in
+    whole or in part contains or is derived from the Program or any
+    part thereof, to be licensed as a whole at no charge to all third
+    parties under the terms of this License.
+
+    c) If the modified program normally reads commands interactively
+    when run, you must cause it, when started running for such
+    interactive use in the most ordinary way, to print or display an
+    announcement including an appropriate copyright notice and a
+    notice that there is no warranty (or else, saying that you provide
+    a warranty) and that users may redistribute the program under
+    these conditions, and telling the user how to view a copy of this
+    License.  (Exception: if the Program itself is interactive but
+    does not normally print such an announcement, your work based on
+    the Program is not required to print an announcement.)
+
+These requirements apply to the modified work as a whole.  If
+identifiable sections of that work are not derived from the Program,
+and can be reasonably considered independent and separate works in
+themselves, then this License, and its terms, do not apply to those
+sections when you distribute them as separate works.  But when you
+distribute the same sections as part of a whole which is a work based
+on the Program, the distribution of the whole must be on the terms of
+this License, whose permissions for other licensees extend to the
+entire whole, and thus to each and every part regardless of who wrote it.
+
+Thus, it is not the intent of this section to claim rights or contest
+your rights to work written entirely by you; rather, the intent is to
+exercise the right to control the distribution of derivative or
+collective works based on the Program.
+
+In addition, mere aggregation of another work not based on the Program
+with the Program (or with a work based on the Program) on a volume of
+a storage or distribution medium does not bring the other work under
+the scope of this License.
+
+  3. You may copy and distribute the Program (or a work based on it,
+under Section 2) in object code or executable form under the terms of
+Sections 1 and 2 above provided that you also do one of the following:
+
+    a) Accompany it with the complete corresponding machine-readable
+    source code, which must be distributed under the terms of Sections
+    1 and 2 above on a medium customarily used for software interchange; or,
+
+    b) Accompany it with a written offer, valid for at least three
+    years, to give any third party, for a charge no more than your
+    cost of physically performing source distribution, a complete
+    machine-readable copy of the corresponding source code, to be
+    distributed under the terms of Sections 1 and 2 above on a medium
+    customarily used for software interchange; or,
+
+    c) Accompany it with the information you received as to the offer
+    to distribute corresponding source code.  (This alternative is
+    allowed only for noncommercial distribution and only if you
+    received the program in object code or executable form with such
+    an offer, in accord with Subsection b above.)
+
+The source code for a work means the preferred form of the work for
+making modifications to it.  For an executable work, complete source
+code means all the source code for all modules it contains, plus any
+associated interface definition files, plus the scripts used to
+control compilation and installation of the executable.  However, as a
+special exception, the source code distributed need not include
+anything that is normally distributed (in either source or binary
+form) with the major components (compiler, kernel, and so on) of the
+operating system on which the executable runs, unless that component
+itself accompanies the executable.
+
+If distribution of executable or object code is made by offering
+access to copy from a designated place, then offering equivalent
+access to copy the source code from the same place counts as
+distribution of the source code, even though third parties are not
+compelled to copy the source along with the object code.
+
+  4. You may not copy, modify, sublicense, or distribute the Program
+except as expressly provided under this License.  Any attempt
+otherwise to copy, modify, sublicense or distribute the Program is
+void, and will automatically terminate your rights under this License.
+However, parties who have received copies, or rights, from you under
+this License will not have their licenses terminated so long as such
+parties remain in full compliance.
+
+  5. You are not required to accept this License, since you have not
+signed it.  However, nothing else grants you permission to modify or
+distribute the Program or its derivative works.  These actions are
+prohibited by law if you do not accept this License.  Therefore, by
+modifying or distributing the Program (or any work based on the
+Program), you indicate your acceptance of this License to do so, and
+all its terms and conditions for copying, distributing or modifying
+the Program or works based on it.
+
+  6. Each time you redistribute the Program (or any work based on the
+Program), the recipient automatically receives a license from the
+original licensor to copy, distribute or modify the Program subject to
+these terms and conditions.  You may not impose any further
+restrictions on the recipients' exercise of the rights granted herein.
+You are not responsible for enforcing compliance by third parties to
+this License.
+
+  7. If, as a consequence of a court judgment or allegation of patent
+infringement or for any other reason (not limited to patent issues),
+conditions are imposed on you (whether by court order, agreement or
+otherwise) that contradict the conditions of this License, they do not
+excuse you from the conditions of this License.  If you cannot
+distribute so as to satisfy simultaneously your obligations under this
+License and any other pertinent obligations, then as a consequence you
+may not distribute the Program at all.  For example, if a patent
+license would not permit royalty-free redistribution of the Program by
+all those who receive copies directly or indirectly through you, then
+the only way you could satisfy both it and this License would be to
+refrain entirely from distribution of the Program.
+
+If any portion of this section is held invalid or unenforceable under
+any particular circumstance, the balance of the section is intended to
+apply and the section as a whole is intended to apply in other
+circumstances.
+
+It is not the purpose of this section to induce you to infringe any
+patents or other property right claims or to contest validity of any
+such claims; this section has the sole purpose of protecting the
+integrity of the free software distribution system, which is
+implemented by public license practices.  Many people have made
+generous contributions to the wide range of software distributed
+through that system in reliance on consistent application of that
+system; it is up to the author/donor to decide if he or she is willing
+to distribute software through any other system and a licensee cannot
+impose that choice.
+
+This section is intended to make thoroughly clear what is believed to
+be a consequence of the rest of this License.
+
+  8. If the distribution and/or use of the Program is restricted in
+certain countries either by patents or by copyrighted interfaces, the
+original copyright holder who places the Program under this License
+may add an explicit geographical distribution limitation excluding
+those countries, so that distribution is permitted only in or among
+countries not thus excluded.  In such case, this License incorporates
+the limitation as if written in the body of this License.
+
+  9. The Free Software Foundation may publish revised and/or new versions
+of the General Public License from time to time.  Such new versions will
+be similar in spirit to the present version, but may differ in detail to
+address new problems or concerns.
+
+Each version is given a distinguishing version number.  If the Program
+specifies a version number of this License which applies to it and "any
+later version", you have the option of following the terms and conditions
+either of that version or of any later version published by the Free
+Software Foundation.  If the Program does not specify a version number of
+this License, you may choose any version ever published by the Free Software
+Foundation.
+
+  10. If you wish to incorporate parts of the Program into other free
+programs whose distribution conditions are different, write to the author
+to ask for permission.  For software which is copyrighted by the Free
+Software Foundation, write to the Free Software Foundation; we sometimes
+make exceptions for this.  Our decision will be guided by the two goals
+of preserving the free status of all derivatives of our free software and
+of promoting the sharing and reuse of software generally.
+
+			    NO WARRANTY
+
+  11. BECAUSE THE PROGRAM IS LICENSED FREE OF CHARGE, THERE IS NO WARRANTY
+FOR THE PROGRAM, TO THE EXTENT PERMITTED BY APPLICABLE LAW.  EXCEPT WHEN
+OTHERWISE STATED IN WRITING THE COPYRIGHT HOLDERS AND/OR OTHER PARTIES
+PROVIDE THE PROGRAM "AS IS" WITHOUT WARRANTY OF ANY KIND, EITHER EXPRESSED
+OR IMPLIED, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF
+MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE.  THE ENTIRE RISK AS
+TO THE QUALITY AND PERFORMANCE OF THE PROGRAM IS WITH YOU.  SHOULD THE
+PROGRAM PROVE DEFECTIVE, YOU ASSUME THE COST OF ALL NECESSARY SERVICING,
+REPAIR OR CORRECTION.
+
+  12. IN NO EVENT UNLESS REQUIRED BY APPLICABLE LAW OR AGREED TO IN WRITING
+WILL ANY COPYRIGHT HOLDER, OR ANY OTHER PARTY WHO MAY MODIFY AND/OR
+REDISTRIBUTE THE PROGRAM AS PERMITTED ABOVE, BE LIABLE TO YOU FOR DAMAGES,
+INCLUDING ANY GENERAL, SPECIAL, INCIDENTAL OR CONSEQUENTIAL DAMAGES ARISING
+OUT OF THE USE OR INABILITY TO USE THE PROGRAM (INCLUDING BUT NOT LIMITED
+TO LOSS OF DATA OR DATA BEING RENDERED INACCURATE OR LOSSES SUSTAINED BY
+YOU OR THIRD PARTIES OR A FAILURE OF THE PROGRAM TO OPERATE WITH ANY OTHER
+PROGRAMS), EVEN IF SUCH HOLDER OR OTHER PARTY HAS BEEN ADVISED OF THE
+POSSIBILITY OF SUCH DAMAGES.
+
+		     END OF TERMS AND CONDITIONS
+
+	    How to Apply These Terms to Your New Programs
+
+  If you develop a new program, and you want it to be of the greatest
+possible use to the public, the best way to achieve this is to make it
+free software which everyone can redistribute and change under these terms.
+
+  To do so, attach the following notices to the program.  It is safest
+to attach them to the start of each source file to most effectively
+convey the exclusion of warranty; and each file should have at least
+the "copyright" line and a pointer to where the full notice is found.
+
+    <one line to give the program's name and a brief idea of what it does.>
+    Copyright (C) <year>  <name of author>
+
+    This program is free software; you can redistribute it and/or modify
+    it under the terms of the GNU General Public License as published by
+    the Free Software Foundation; either version 2 of the License, or
+    (at your option) any later version.
+
+    This program is distributed in the hope that it will be useful,
+    but WITHOUT ANY WARRANTY; without even the implied warranty of
+    MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+    GNU General Public License for more details.
+
+    You should have received a copy of the GNU General Public License along
+    with this program; if not, write to the Free Software Foundation, Inc.,
+    51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA.
+
+Also add information on how to contact you by electronic and paper mail.
+
+If the program is interactive, make it output a short notice like this
+when it starts in an interactive mode:
+
+    Gnomovision version 69, Copyright (C) year name of author
+    Gnomovision comes with ABSOLUTELY NO WARRANTY; for details type `show w'.
+    This is free software, and you are welcome to redistribute it
+    under certain conditions; type `show c' for details.
+
+The hypothetical commands `show w' and `show c' should show the appropriate
+parts of the General Public License.  Of course, the commands you use may
+be called something other than `show w' and `show c'; they could even be
+mouse-clicks or menu items--whatever suits your program.
+
+You should also get your employer (if you work as a programmer) or your
+school, if any, to sign a "copyright disclaimer" for the program, if
+necessary.  Here is a sample; alter the names:
+
+  Yoyodyne, Inc., hereby disclaims all copyright interest in the program
+  `Gnomovision' (which makes passes at compilers) written by James Hacker.
+
+  <signature of Ty Coon>, 1 April 1989
+  Ty Coon, President of Vice
+
+This General Public License does not permit incorporating your program into
+proprietary programs.  If your program is a subroutine library, you may
+consider it more useful to permit linking proprietary applications with the
+library.  If this is what you want to do, use the GNU Lesser General
+Public License instead of this License.
Index: /DRBLLiveHelper/CommonModule.bas
===================================================================
--- /DRBLLiveHelper/CommonModule.bas	(revision 33)
+++ /DRBLLiveHelper/CommonModule.bas	(revision 33)
@@ -0,0 +1,477 @@
+Attribute VB_Name = "CommonModule"
+Option Explicit
+'''''Global Variable''''
+Public Const G_LibPath = "lib\"
+Dim G_DriveID
+'''''
+Public Declare Function SetWindowText Lib "user32" Alias "SetWindowTextW" (ByVal hwnd As Long, ByVal lpString As String) As Long
+
+
+Public Declare Function ShellExecute Lib "shell32.dll" Alias "ShellExecuteA" (ByVal hwnd As Long, ByVal lpOperation As String, ByVal lpFile As String, ByVal lpParameters As String, ByVal lpDirectory As String, ByVal nShowCmd As Long) As Long
+Public Declare Function SetWindowPos Lib "user32" (ByVal hwnd As Long, ByVal hWndInsertAfter As Long, ByVal x As Long, ByVal Y As Long, ByVal cx As Long, ByVal cy As Long, ByVal wFlags As Long) As Long
+
+Public Declare Function GetOpenFileName Lib "comdlg32.dll" Alias _
+    "GetOpenFileNameA" (pOpenfilename As OPENFILENAME) As Long
+    
+Public Declare Function GetTempPath Lib "kernel32.dll" Alias "GetTempPathA" (ByVal nBufferLength As Long, ByVal lpBuffer As String) As Long
+    
+Public Declare Function OpenProcess _
+    Lib "kernel32" ( _
+    ByVal dwDesiredAccess As Long, _
+    ByVal bInheritHandle As Long, _
+    ByVal dwProcessID As Long) _
+    As Long
+Public Declare Function WaitForSingleObject _
+    Lib "kernel32" ( _
+    ByVal hHandle As Long, _
+    ByVal dwMilliseconds As Long) _
+    As Long
+Public Declare Function CloseHandle _
+    Lib "kernel32" ( _
+    ByVal hObject As Long) _
+    As Long
+Public Const SYNCHRONIZE = &H100000
+Public Const INFINITE = &HFFFF
+   Public Type STARTUPINFO
+      cb As Long
+      lpReserved As String
+      lpDesktop As String
+      lpTitle As String
+      dwX As Long
+      dwY As Long
+      dwXSize As Long
+      dwYSize As Long
+      dwXCountChars As Long
+      dwYCountChars As Long
+      dwFillAttribute As Long
+      dwFlags As Long
+      wShowWindow As Integer
+      cbReserved2 As Integer
+      lpReserved2 As Long
+      hStdInput As Long
+      hStdOutput As Long
+      hStdError As Long
+   End Type
+
+   Public Type PROCESS_INFORMATION
+      hProcess As Long
+      hThread As Long
+      dwProcessID As Long
+      dwThreadID As Long
+   End Type
+
+  ' Public Declare Function WaitForSingleObject Lib "kernel32" (ByVal _
+  '    hHandle As Long, ByVal dwMilliseconds As Long) As Long
+
+   Public Declare Function CreateProcessA Lib "kernel32" (ByVal _
+      lpApplicationName As String, ByVal lpCommandLine As String, ByVal _
+      lpProcessAttributes As Long, ByVal lpThreadAttributes As Long, _
+      ByVal bInheritHandles As Long, ByVal dwCreationFlags As Long, _
+      ByVal lpEnvironment As Long, ByVal lpCurrentDirectory As String, _
+      lpStartupInfo As STARTUPINFO, lpProcessInformation As _
+      PROCESS_INFORMATION) As Long
+
+  ' Public Declare Function CloseHandle Lib "kernel32" _
+  '    (ByVal hObject As Long) As Long
+
+   Public Declare Function GetExitCodeProcess Lib "kernel32" _
+      (ByVal hProcess As Long, lpExitCode As Long) As Long
+
+   Public Const NORMAL_PRIORITY_CLASS = &H20&
+  ' Public Const INFINITE = -1&
+Public Type OPENFILENAME
+    lStructSize As Long
+    hwndOwner As Long
+    hInstance As Long
+    lpstrFilter As String
+    lpstrCustomFilter As String
+    nMaxCustFilter As Long
+    iFilterIndex As Long
+    lpstrFile As String
+    nMaxFile As Long
+    lpstrFileTitle As String
+    nMaxFileTitle As Long
+    lpstrInitialDir As String
+    lpstrTitle As String
+    flags As Long
+    nFileOffset As Integer
+    nFileExtension As Integer
+    lpstrDefExt As String
+    lCustData As Long
+    lpfnHook As Long
+    lpTemplateName As String
+End Type
+
+Public Enum OFNFlagsEnum
+    OFN_ALLOWMULTISELECT = &H200
+    OFN_CREATEPROMPT = &H2000
+    OFN_ENABLEHOOK = &H20
+    OFN_ENABLETEMPLATE = &H40
+    OFN_ENABLETEMPLATEHANDLE = &H80
+    OFN_EXPLORER = &H80000
+    OFN_EXTENSIONDIFFERENT = &H400
+    OFN_FILEMUSTEXIST = &H1000
+    OFN_HIDEREADONLY = &H4
+    OFN_LONGNAMES = &H200000
+    OFN_NOCHANGEDIR = &H8
+    OFN_NODEREFERENCELINKS = &H100000
+    OFN_NOLONGNAMES = &H40000
+    OFN_NONETWORKBUTTON = &H20000
+    OFN_NOREADONLYRETURN = &H8000
+    OFN_NOTESTFILECREATE = &H10000
+    OFN_NOVALIDATE = &H100
+    OFN_OVERWRITEPROMPT = &H2
+    OFN_PATHMUSTEXIST = &H800
+    OFN_READONLY = &H1
+    OFN_SHAREAWARE = &H4000
+    OFN_SHAREFALLTHROUGH = 2
+    OFN_SHARENOWARN = 1
+    OFN_SHAREWARN = 0
+    OFN_SHOWHELP = &H10
+End Enum
+  
+   
+Public Function ShellAndWait(CommandLine As String)
+    Dim ShellId As Long
+    Dim ShellHandle As Long
+    Dim ret As Long
+    ShellId = Shell(CommandLine, vbHide) 'vbNormalFocus
+    ShellHandle = OpenProcess(SYNCHRONIZE, 0, ShellId)
+    If ShellHandle <> 0 Then
+        ret& = WaitForSingleObject(ShellHandle, INFINITE)
+        CloseHandle ShellHandle
+        ShellAndWait = ret&
+    End If
+End Function
+
+Public Function ExecCmd(cmdline$)
+      Dim proc As PROCESS_INFORMATION
+      Dim start As STARTUPINFO
+      Dim ret As Long
+      ' Initialize the STARTUPINFO structure:
+      start.cb = Len(start)
+
+      ' Start the shelled application:
+      ret& = CreateProcessA(vbNullString, cmdline$, 0&, 0&, 1&, _
+         NORMAL_PRIORITY_CLASS, 0&, vbNullString, start, proc)
+
+      ' Wait for the shelled application to finish:
+         ret& = WaitForSingleObject(proc.hProcess, INFINITE)
+         Call GetExitCodeProcess(proc.hProcess, ret&)
+         Call CloseHandle(proc.hThread)
+         Call CloseHandle(proc.hProcess)
+         ExecCmd = ret&
+End Function
+
+Public Sub AlwaysOnTop(FrmID As Form, OnTop As Integer)
+    ' ===========================================
+    ' Requires the following declaration
+    ' For VB3:
+    ' Declare Function SetWindowPos Lib "user" (ByVal h%, ByVal hb%, ByVal x%, ByVal Y%, ByVal cx%, ByVal cy%, ByVal f%) As Integer
+    ' For VB4:
+    ' Private Declare Function SetWindowPos Lib "user32" (ByVal hwnd As Long, ByVal hWndInsertAfter As Long, ByVal x As Long, ByVal Y As Long, ByVal cx As Long, ByVal cy As Long, ByVal wFlags As Long) As Long
+    ' ===========================================
+    ' Usage:
+    ' AlwaysOnTop Me, -1  ' To make always on top
+    ' AlwaysOnTop Me, -2  ' To make NOT always on top
+    ' ===========================================
+    Const SWP_NOMOVE = 2
+    Const SWP_NOSIZE = 1
+    Const flags = SWP_NOMOVE Or SWP_NOSIZE
+    Const HWND_TOPMOST = -1
+    Const HWND_NOTOPMOST = -2
+    If OnTop = -1 Then
+        OnTop = SetWindowPos(FrmID.hwnd, HWND_TOPMOST, 0, 0, 0, 0, flags)
+    Else
+        OnTop = SetWindowPos(FrmID.hwnd, HWND_NOTOPMOST, 0, 0, 0, 0, flags)
+    End If
+End Sub
+
+' Show the common dialog to select a file to open. Returns the path of the
+' selected file or a null string if the dialog is canceled
+' Parameters:
+'  - sFilter is used to specify what type(s) of files will be shown
+'  - sDefExt is the default extension associated to a file name if no one is
+' specified by the user
+'  - sInitDir is the directory that will be open when the dialog is shown
+'  - lFlag is a combination of Flags for the dialog. Look at the Common
+' Dialogs' Help for more informations
+'  - hParent is the handle of the parent form
+
+' Example:
+'    Dim sFilter As String
+'    'set the filter: show text files and all the files
+'    sFilter = "Text files (*.txt)|*.txt|All files (*.*)|*.*"
+'    'let the user select a file, ensuring that it exists
+'    MsgBox "File selected: " & ShowOpenFileDialog(sFilter, "txt",
+'  "C:\Documents", OFN_FILEMUSTEXIST)
+
+Function ShowOpenFileDialog(ByVal sFilter As String, Optional ByVal sDefExt As _
+    String, Optional ByVal sInitDir As String, Optional ByVal lFlags As Long, _
+    Optional ByVal hParent As Long) As String
+    Dim OFN As OPENFILENAME
+    On Error Resume Next
+    
+    ' set the values for the OpenFileName struct
+    With OFN
+        .lStructSize = Len(OFN)
+        .hwndOwner = hParent
+        .lpstrFilter = Replace(sFilter, "|", vbNullChar) & vbNullChar
+        .lpstrFile = Space$(255) & vbNullChar & vbNullChar
+        .nMaxFile = Len(.lpstrFile)
+        .flags = lFlags
+        .lpstrInitialDir = sInitDir
+        .lpstrDefExt = sDefExt
+    End With
+    
+    ' show the dialog, non-zero means success
+    If GetOpenFileName(OFN) Then
+        ' extract the selected file (including the path)
+        ShowOpenFileDialog = Left$(OFN.lpstrFile, InStr(OFN.lpstrFile, _
+            vbNullChar) - 1)
+    End If
+End Function
+
+' Return True if a file exists
+Function FileExists(ByVal FileName As String) As Boolean
+    On Error GoTo ErrorHandler
+    ' get the attributes and ensure that it isn't a directory
+    FileExists = (GetAttr(FileName) And vbDirectory) = 0
+ErrorHandler:
+    ' if an error occurs, this function returns False
+End Function
+
+Public Function GetTempDir() As String
+' Returns the temp directory from the OS system
+    Dim sBuffer As String
+    Dim HoldBuffer As String
+    Dim iBuffLen As Long
+    Dim iReturn As Long
+    Const BUFFER_LENGTH = 256
+
+    iBuffLen = BUFFER_LENGTH
+    sBuffer = Space(BUFFER_LENGTH)
+    iReturn = GetTempPath(iBuffLen, sBuffer) '* get rid of the null character
+    HoldBuffer = Left$(sBuffer, iBuffLen - 1)
+    GetTempDir = Left$(HoldBuffer, InStr(HoldBuffer, vbNullChar) - 1)
+End Function
+
+Public Function GetDriveID() As String
+    GetDriveID = G_DriveID
+End Function
+
+Public Function SetDriveID(ByVal drive As String)
+    G_DriveID = drive
+End Function
+
+Public Function IsUnicodeFile(ByVal fname As String)
+    
+    Dim uniCode(0 To 1) As Byte
+    Dim Res() As String
+    Dim isUniCode As Boolean
+    
+    Open fname For Binary As #1
+    
+    Get #1, , uniCode
+    
+    isUniCode = False
+    If uniCode(0) = &HFF And uniCode(1) = &HFE Then
+        isUniCode = True
+    End If
+    Close #1
+    
+    IsUnicodeFile = isUniCode
+    
+End Function
+
+Public Function MapIndex(ByVal idxStr As String) As Integer
+    
+    idxStr = LCase(idxStr)
+    
+    If idxStr = "sel_usb_drv" Then
+        MapIndex = 0
+        Exit Function
+    End If
+    
+    If idxStr = "fmt_usb_drv" Then
+        MapIndex = 1
+        Exit Function
+    End If
+    
+    If idxStr = "pls_sel_usb_drv" Then
+        MapIndex = 2
+        Exit Function
+    End If
+    
+    If idxStr = "next" Then
+        MapIndex = 3
+        Exit Function
+    End If
+    
+    If idxStr = "exit" Then
+        MapIndex = 4
+        Exit Function
+    End If
+    
+    If idxStr = "usb_drv" Then
+        MapIndex = 5
+        Exit Function
+    End If
+    
+    If idxStr = "mk_usb_drv_boot" Then
+        MapIndex = 6
+        Exit Function
+    End If
+    
+    If idxStr = "sel_img" Then
+        MapIndex = 7
+        Exit Function
+    End If
+    
+    If idxStr = "inst_img" Then
+        MapIndex = 8
+        Exit Function
+    End If
+    
+    If idxStr = "browse" Then
+        MapIndex = 9
+        Exit Function
+    End If
+    
+    If idxStr = "pls_sel_arch_file" Then
+        MapIndex = 10
+        Exit Function
+    End If
+    
+    If idxStr = "usb_drv_boot" Then
+        MapIndex = 11
+        Exit Function
+    End If
+    
+    If idxStr = "close" Then
+        MapIndex = 12
+        Exit Function
+    End If
+    
+    If idxStr = "inst_ok" Then
+        MapIndex = 13
+        Exit Function
+    End If
+    
+    If idxStr = "confirm" Then
+        MapIndex = 14
+        Exit Function
+    End If
+    
+    If idxStr = "no_hp_fmt_tool" Then
+        MapIndex = 15
+        Exit Function
+    End If
+    
+    If idxStr = "pre" Then
+        MapIndex = 16
+        Exit Function
+    End If
+    
+    If idxStr = "sel_lang" Then
+        MapIndex = 17
+        Exit Function
+    End If
+    
+    MapIndex = -1
+End Function
+
+Public Function ParseUnicodeFile(ByVal fname As String) As String()
+    
+    Dim OutRec As String, uniCode As String, str() As String, Res() As String
+    ReDim Res(30)
+    Dim idx As Integer
+    
+    Open fname For Binary As #1
+
+    uniCode = InputB(2, #1)
+        
+    OutRec = ""
+    
+    Do While Not EOF(1)
+        
+        uniCode = InputB(2, #1)
+        
+        If EOF(1) Then
+           Exit Do
+        End If
+        
+        Select Case AscW(uniCode)
+            Case AscW(vbNewLine)
+                uniCode = InputB(2, #1)
+                              
+                If Trim$(OutRec) <> "" Then
+                   str = Split(OutRec, "=")
+                                      
+                   If UBound(str) > 0 Then
+                      idx = MapIndex(str(0))
+                      
+                      If idx >= UBound(Res) Then
+                         ReDim Res(UBound(Res) + idx + 10)
+                      End If
+                      Res(idx) = str(1)
+                   End If
+                End If
+                   
+                OutRec = ""
+            Case Else
+                OutRec = OutRec & uniCode
+                
+        End Select
+
+    Loop
+        
+    
+    
+    If Trim$(OutRec) <> "" Then
+        str = Split(OutRec, "=")
+             
+        If UBound(str) > 0 Then
+           Res(MapIndex(str(0))) = str(1)
+        End If
+    End If
+        
+    Close #1
+    ParseUnicodeFile = Res
+    
+End Function
+
+Public Function ParseAsciiFile(ByVal fname As String) As String()
+    Dim OutRec As String
+    Dim str() As String, Res() As String
+    ReDim Res(30)
+    Dim idx As Integer
+    Open fname For Binary As #1
+    
+   
+    Do While Not EOF(1)
+        
+        Line Input #1, OutRec
+        
+                   
+        If Trim$(OutRec) <> "" Then
+           str = Split(OutRec, "=")
+             
+           If UBound(str) > 0 Then
+              idx = MapIndex(str(0))
+              If idx >= UBound(Res) Then
+                 ReDim Res(UBound(Res) + idx + 10)
+              End If
+           
+              Res(idx) = str(1)
+           End If
+         End If
+
+    Loop
+    
+    Close #1
+    
+    ParseAsciiFile = Res
+    
+End Function
+
Index: /DRBLLiveHelper/FTPModule.bas
===================================================================
--- /DRBLLiveHelper/FTPModule.bas	(revision 33)
+++ /DRBLLiveHelper/FTPModule.bas	(revision 33)
@@ -0,0 +1,90 @@
+Attribute VB_Name = "FTPModule"
+Option Explicit
+
+Public Declare Function InternetOpen Lib "wininet.dll" Alias "InternetOpenA" _
+(ByVal sAgent As String, ByVal lAccessType As Long, ByVal sProxyName As String, _
+ByVal sProxyBypass As String, ByVal lFlags As Long) As Long
+
+Public Declare Function InternetConnect Lib "wininet.dll" Alias "InternetConnectA" _
+(ByVal hInternetSession As Long, ByVal sServerName As String, _
+ByVal nServerPort As Integer, ByVal sUsername As String, _
+ByVal sPassword As String, ByVal lService As Long, _
+ByVal lFlags As Long, ByVal lContext As Long) As Long
+
+Public Declare Function FtpGetFile Lib "wininet.dll" Alias "FtpGetFileA" _
+(ByVal hFtpSession As Long, ByVal lpszRemoteFile As String, _
+ByVal lpszNewFile As String, ByVal fFailIfExists As Boolean, _
+ByVal dwFlagsAndAttributes As Long, ByVal dwFlags As Long, _
+ByVal dwContext As Long) As Boolean
+
+Public Declare Function FtpPutFile Lib "wininet.dll" Alias "FtpPutFileA" _
+(ByVal hFtpSession As Long, ByVal lpszLocalFile As String, _
+ByVal lpszRemoteFile As String, ByVal dwFlags As Long, _
+ByVal dwContext As Long) As Boolean
+
+Public Declare Function FtpDeleteFile Lib "wininet.dll" Alias "FtpDeleteFileA" _
+  (ByVal hFtpSession As Long, ByVal lpszFileName As String) As Boolean
+ 
+Public Declare Function FtpRenameFile Lib "wininet.dll" Alias "FtpRenameFileA" _
+  (ByVal hFtpSession As Long, ByVal lpszExsiting As String, ByVal lpszNew As String) As Boolean
+ 
+Public Declare Function InternetCloseHandle Lib "wininet.dll" (ByVal hInet As Long) As Integer
+
+Public Declare Function FtpFindFirstFile Lib "wininet.dll" Alias "FtpFindFirstFileA" _
+   (ByVal hFtpSession As Long, ByVal lpszSearchFile As String, _
+    lpFindFileData As WIN32_FIND_DATA, ByVal dwFlags As Long, _
+    ByVal dwContent As Long) As Long
+   
+Public Declare Function FtpSetCurrentDirectory Lib "wininet.dll" Alias "FtpSetCurrentDirectoryA" _
+    (ByVal hFtpSession As Long, ByVal lpszDirectory As String) As Boolean
+    
+Public Declare Function InternetFindNextFile Lib "wininet.dll" Alias "InternetFindNextFileA" _
+(ByVal hFind As Long, lpvFndData As WIN32_FIND_DATA) As Long
+
+Public Type FILETIME
+  dwLowDateTime As Long
+  dwHighDateTime As Long
+End Type
+Public Type WIN32_FIND_DATA
+   dwFilAttributes As Long
+   ftCreationTime As FILETIME
+   ftLastAccessTime As FILETIME
+   ftLastWriteTime As FILETIME
+   nFileSizeHigh As Long
+   nFileSizeLow As Long
+   dwReserved0 As Long
+   dwReserved1 As Long
+   cFileName As String * 260
+   cAlternate As String * 14
+End Type
+
+
+Public Declare Function GetOpenFileName Lib "comdlg32.dll" Alias _
+        "GetOpenFileNameA" (pOpenfilename As OPENFILENAME) As Long
+ 
+Type OPENFILENAME
+     lStructSize As Long
+     hwndOwner As Long
+     hInstance As Long
+     lpstrFilter As String
+     lpstrCustomFilter As String
+     nMaxCustFilter As Long
+     nFilterIndex As Long
+     lpstrFile As String
+     nMaxFile As Long
+     lpstrFileTitle As String
+     nMaxFileTitle As Long
+     lpstrInitialDir As String
+     lpstrTitle As String
+     flags As Long
+     nFileOffset As Integer
+     nFileExtension As Integer
+     lpstrDefExt As String
+     lCustData As Long
+     lpfnHook As Long
+     lpTemplateName As String
+End Type
+
+Public Const INTERNET_FLAG_RELOAD = &H80000000
+Public Const FTP_TRANSFER_TYPE_BINARY = &H2
+Public Const FTP_TRANSFER_TYPE_ASCII = &H1
Index: /DRBLLiveHelper/FormatDialog.frm
===================================================================
--- /DRBLLiveHelper/FormatDialog.frm	(revision 33)
+++ /DRBLLiveHelper/FormatDialog.frm	(revision 33)
@@ -0,0 +1,80 @@
+VERSION 5.00
+Begin VB.Form FormatDialog 
+   BackColor       =   &H00FFFFFF&
+   BorderStyle     =   3  'Âù½u©T©w¹ï¸Ü¤è¶ô
+   Caption         =   "DRBLLiveHelper - Disk Formatting Confirm Window"
+   ClientHeight    =   1590
+   ClientLeft      =   4275
+   ClientTop       =   5130
+   ClientWidth     =   7290
+   Icon            =   "FormatDialog.frx":0000
+   LinkTopic       =   "Form1"
+   MaxButton       =   0   'False
+   MinButton       =   0   'False
+   ScaleHeight     =   1590
+   ScaleWidth      =   7290
+   ShowInTaskbar   =   0   'False
+   Begin VB.CommandButton btnClose 
+      Caption         =   "Close"
+      Height          =   375
+      Left            =   0
+      TabIndex        =   0
+      Top             =   1200
+      Width           =   1215
+   End
+   Begin VB.Label lbl 
+      BackStyle       =   0  '³z©ú
+      ForeColor       =   &H00FF0000&
+      Height          =   495
+      Left            =   1440
+      TabIndex        =   2
+      Top             =   600
+      Width           =   5655
+   End
+   Begin VB.Label lblMsg 
+      BackColor       =   &H00C0FFFF&
+      ForeColor       =   &H00808080&
+      Height          =   1575
+      Left            =   1200
+      TabIndex        =   1
+      Top             =   0
+      Width           =   7695
+   End
+   Begin VB.Image Image1 
+      Height          =   1200
+      Left            =   0
+      Picture         =   "FormatDialog.frx":0CCA
+      Stretch         =   -1  'True
+      Top             =   0
+      Width           =   1200
+   End
+End
+Attribute VB_Name = "FormatDialog"
+Attribute VB_GlobalNameSpace = False
+Attribute VB_Creatable = False
+Attribute VB_PredeclaredId = True
+Attribute VB_Exposed = False
+Option Explicit
+
+Private Sub btnClose_Click()
+  Unload Me
+End Sub
+
+Private Sub Form_Load()
+  lbl.Caption = "You will loose your Data on account of the unnecessary step of disk formatting. " & Chr(10) + Chr(13) & _
+                   "Please confirm again you want to format your USB disk drive before installing."
+    'Internalization
+    If (LoadLocalizedResources) Then
+       ' Pull a string resource out of a local resource
+       ' object for demonstration purposes.
+       lbl.Caption = GetString(107)
+       Me.Caption = GetString(108)
+       btnClose.Caption = GetString(109)
+    End If
+    '
+End Sub
+
+Private Sub Form_Unload(Cancel As Integer)
+  Unload Me
+End Sub
+
Index: /DRBLLiveHelper/FormatPage.frm
===================================================================
--- /DRBLLiveHelper/FormatPage.frm	(revision 33)
+++ /DRBLLiveHelper/FormatPage.frm	(revision 33)
@@ -0,0 +1,319 @@
+VERSION 5.00
+Object = "{0D452EE1-E08F-101A-852E-02608C4D0BB4}#2.0#0"; "FM20.DLL"
+Begin VB.Form FormatPage 
+   BackColor       =   &H00FFFFFF&
+   Caption         =   "DRBL Helper"
+   ClientHeight    =   1935
+   ClientLeft      =   4305
+   ClientTop       =   5565
+   ClientWidth     =   7560
+   Icon            =   "FormatPage.frx":0000
+   LinkTopic       =   "Form1"
+   MaxButton       =   0   'False
+   ScaleHeight     =   1935
+   ScaleWidth      =   7560
+   Begin MSForms.CommandButton cmdPrevious 
+      Height          =   375
+      Left            =   3600
+      TabIndex        =   7
+      Top             =   1440
+      Width           =   1215
+      Caption         =   "Previous"
+      Size            =   "2143;661"
+      FontName        =   "·s²Ó©úÅé"
+      FontHeight      =   180
+      FontCharSet     =   136
+      FontPitchAndFamily=   34
+      ParagraphAlign  =   3
+   End
+   Begin MSForms.CommandButton cmdExit 
+      Height          =   375
+      Left            =   6240
+      TabIndex        =   6
+      Top             =   1440
+      Width           =   1215
+      Caption         =   "Exit"
+      Size            =   "2143;661"
+      FontName        =   "·s²Ó©úÅé"
+      FontHeight      =   180
+      FontCharSet     =   136
+      FontPitchAndFamily=   34
+      ParagraphAlign  =   3
+   End
+   Begin MSForms.CommandButton cmdNext 
+      Height          =   375
+      Left            =   4920
+      TabIndex        =   5
+      Top             =   1440
+      Width           =   1215
+      Caption         =   "Next"
+      Size            =   "2143;661"
+      FontName        =   "·s²Ó©úÅé"
+      FontHeight      =   180
+      FontCharSet     =   136
+      FontPitchAndFamily=   34
+      ParagraphAlign  =   3
+   End
+   Begin MSForms.CommandButton cmdRun 
+      Height          =   375
+      Left            =   3600
+      TabIndex        =   4
+      Top             =   720
+      Width           =   3855
+      Caption         =   "Format USB flash drive"
+      Size            =   "6800;661"
+      FontName        =   "·s²Ó©úÅé"
+      FontHeight      =   180
+      FontCharSet     =   136
+      FontPitchAndFamily=   34
+      ParagraphAlign  =   3
+   End
+   Begin MSForms.ComboBox DeviceCombo 
+      Height          =   375
+      Left            =   4440
+      TabIndex        =   3
+      Top             =   240
+      Width           =   3015
+      VariousPropertyBits=   746604571
+      DisplayStyle    =   3
+      Size            =   "5318;661"
+      MatchEntry      =   1
+      ShowDropButtonWhen=   2
+      FontName        =   "·s²Ó©úÅé"
+      FontHeight      =   180
+      FontCharSet     =   136
+      FontPitchAndFamily=   34
+   End
+   Begin MSForms.Label lbl1 
+      Height          =   495
+      Left            =   2280
+      TabIndex        =   2
+      Top             =   240
+      Width           =   2055
+      ForeColor       =   12632064
+      BackColor       =   16777215
+      VariousPropertyBits=   8388627
+      Caption         =   "Select USB flash drive"
+      Size            =   "3625;873"
+      FontName        =   "·s²Ó©úÅé"
+      FontHeight      =   180
+      FontCharSet     =   136
+      FontPitchAndFamily=   34
+   End
+   Begin VB.Label lbl3 
+      BackStyle       =   0  '³z©ú
+      Caption         =   "http://clonezilla.sf.net"
+      BeginProperty Font 
+         Name            =   "Arial"
+         Size            =   9
+         Charset         =   0
+         Weight          =   400
+         Underline       =   -1  'True
+         Italic          =   0   'False
+         Strikethrough   =   0   'False
+      EndProperty
+      ForeColor       =   &H00FF8080&
+      Height          =   255
+      Left            =   1800
+      TabIndex        =   1
+      Top             =   840
+      Width           =   2535
+   End
+   Begin VB.Label lbl2 
+      BackStyle       =   0  '³z©ú
+      Caption         =   "http://drbl.sf.net"
+      BeginProperty Font 
+         Name            =   "Arial"
+         Size            =   9
+         Charset         =   0
+         Weight          =   400
+         Underline       =   -1  'True
+         Italic          =   0   'False
+         Strikethrough   =   0   'False
+      EndProperty
+      ForeColor       =   &H00FF8080&
+      Height          =   255
+      Left            =   1800
+      TabIndex        =   0
+      Top             =   1200
+      Width           =   1455
+   End
+   Begin VB.Image Image1 
+      Height          =   1935
+      Left            =   0
+      Picture         =   "FormatPage.frx":0CCA
+      Stretch         =   -1  'True
+      Top             =   0
+      Width           =   1935
+   End
+End
+Attribute VB_Name = "FormatPage"
+Attribute VB_GlobalNameSpace = False
+Attribute VB_Creatable = False
+Attribute VB_PredeclaredId = True
+Attribute VB_Exposed = False
+Dim msg As String
+
+Sub SetDriveCombo()
+                    
+   Dim fso, d, dc, item
+   
+   Me.DeviceCombo.Clear
+   
+   Set fso = CreateObject("Scripting.FileSystemObject")
+   Set dc = fso.Drives
+
+   For Each d In dc
+      
+      If (d.DriveType = 1) And d.IsReady Then
+
+         item = d.DriveLetter & " - " & d.VolumeName & " : " & d.FileSystem
+         Me.DeviceCombo.AddItem (item)
+         'MsgBox "add drive: " & item
+      End If
+
+   Next
+    
+    If Me.DeviceCombo.ListCount = 0 Then
+       Me.DeviceCombo.AddItem ("No Devie Found")
+    End If
+    
+End Sub
+
+Function GetDrive()
+   Dim fso, drive, dc, s, ds
+   Dim strCmd, d As String
+   Dim idx, dsSize As Integer
+   
+   dsSize = 0
+   Set fso = CreateObject("Scripting.FileSystemObject")
+   Set dc = fso.Drives
+   s = ""
+   For Each drive In dc
+      If (drive.DriveType = 1) And drive.IsReady Then
+         If s = "" Then
+            s = drive.DriveLetter
+         Else
+            s = s & "," & drive.DriveLetter
+         End If
+         dsSize = dsSize + 1
+      End If
+   Next
+   
+   ds = Split(s, ",")
+
+   idx = Me.DeviceCombo.ListIndex
+
+   If idx > -1 And idx < dsSize Then
+       d = ds(idx)
+   Else
+       d = ""
+   End If
+   GetDrive = d
+End Function
+
+Private Sub cmdExit_Click()
+    If LanguagePage.Visible = False Then
+        Unload LanguagePage
+    End If
+  
+  If InstallPage.Visible = False Then
+    Unload InstallPage
+  End If
+  
+  If BootPage.Visible = False Then
+    Unload BootPage
+  End If
+  
+  Unload Me
+End Sub
+
+Private Sub cmdPrevious_Click()
+  Me.Hide
+  LanguagePage.Show
+End Sub
+
+Private Sub cmdRun_Click()
+   Dim HPPath, d, args
+   
+   d = GetDrive()
+   
+   If d = "" Then
+       'MsgBox msg
+       ReadyDialog.lblMsg.Caption = msg
+       AlwaysOnTop ReadyDialog, True
+       ReadyDialog.Show
+       
+       Exit Sub
+   End If
+   
+   'Format usb flash drive
+   HPPath = GetRegKeyValue(HKEY_LOCAL_MACHINE, "SOFTWARE\Microsoft\Windows\CurrentVersion\App Paths\Y:\ThinClient\HPUSBFW\Data Files\HPUSBFW.EXE", "Path")
+   If HPPath = "" Then
+      AlwaysOnTop InstallHPDialog, True
+      InstallHPDialog.Show
+      Exit Sub
+   End If
+   args = d & ": -FS:FAT32 -Q -Y"
+   HPPath = """" & HPPath & "\HPUSBF.EXE"" " & args
+   ExecCmd (HPPath)
+   
+   
+End Sub
+
+Private Sub cmdNext_Click()
+   d = GetDrive()
+   
+   If d = "" Then
+       'MsgBox msg
+       ReadyDialog.lblMsg.Caption = msg
+       AlwaysOnTop ReadyDialog, True
+       ReadyDialog.Show
+       
+       Exit Sub
+   End If
+   SetDriveID (d)
+   Me.Hide
+   InstallPage.Show
+End Sub
+
+
+Private Sub DeviceCombo_DropDown()
+   SetDriveCombo
+End Sub
+
+
+Private Sub Form_Load()
+    Me.Top = LanguagePage.Top
+    Me.Left = LanguagePage.Left
+   SetLocale
+End Sub
+
+Public Sub SetLocale()
+   '
+   msg = "Please select an USB flash drive."
+
+    If (LoadLocalizedResources) Then
+       ' Pull a string resource out of a local resource
+       ' object for demonstration purposes.
+       lbl1.Caption = GetString(0)
+       cmdRun.Caption = GetString(1)
+       cmdNext.Caption = GetString(3)
+       cmdExit.Caption = GetString(4)
+       cmdPrevious.Caption = GetString(16)
+       'Me.Caption = GetString()
+       msg = GetString(2)
+    End If
+   
+   '
+   SetDriveCombo
+
+End Sub
+
+Private Sub lbl2_Click()
+    ShellExecute hwnd, "Open", lbl2.Caption, "", App.path, 1
+End Sub
+
+Private Sub lbl3_Click()
+    ShellExecute hwnd, "Open", lbl3.Caption, "", App.path, 1
+End Sub
Index: /DRBLLiveHelper/InstallFM20.frm
===================================================================
--- /DRBLLiveHelper/InstallFM20.frm	(revision 33)
+++ /DRBLLiveHelper/InstallFM20.frm	(revision 33)
@@ -0,0 +1,82 @@
+VERSION 5.00
+Begin VB.Form InstallFM20 
+   BackColor       =   &H00FFFFFF&
+   Caption         =   "DRBL Helper"
+   ClientHeight    =   1545
+   ClientLeft      =   2850
+   ClientTop       =   5505
+   ClientWidth     =   11145
+   Icon            =   "InstallFM20.frx":0000
+   LinkTopic       =   "Form1"
+   ScaleHeight     =   1545
+   ScaleWidth      =   11145
+   Begin VB.CommandButton btnOK 
+      Caption         =   "Close"
+      Height          =   375
+      Left            =   0
+      TabIndex        =   3
+      Top             =   1200
+      Width           =   1335
+   End
+   Begin VB.Image Image1 
+      Height          =   1215
+      Left            =   0
+      Picture         =   "InstallFM20.frx":0CCA
+      Stretch         =   -1  'True
+      Top             =   0
+      Width           =   1215
+   End
+   Begin VB.Label lbl1 
+      BackStyle       =   0  '³z©ú
+      Caption         =   "No multilanguage componets installed. Please download ""Microsoft Office Forms 2.0 Object Library"" "
+      ForeColor       =   &H000000FF&
+      Height          =   255
+      Left            =   1680
+      TabIndex        =   2
+      Top             =   360
+      Width           =   7335
+   End
+   Begin VB.Label lblFM20URL 
+      BackStyle       =   0  '³z©ú
+      Caption         =   "http://download.microsoft.com/download/activexcontrolpad/install/4.0.0.950/win98mexp/en-us/setuppad.exe"
+      BeginProperty Font 
+         Name            =   "Arial"
+         Size            =   9
+         Charset         =   0
+         Weight          =   400
+         Underline       =   -1  'True
+         Italic          =   0   'False
+         Strikethrough   =   0   'False
+      EndProperty
+      ForeColor       =   &H00FF0000&
+      Height          =   375
+      Left            =   1680
+      TabIndex        =   1
+      Top             =   720
+      Width           =   8895
+   End
+   Begin VB.Label lblMsg 
+      BackColor       =   &H00C0FFFF&
+      Height          =   1815
+      Left            =   1320
+      TabIndex        =   0
+      Top             =   0
+      Width           =   9855
+   End
+End
+Attribute VB_Name = "InstallFM20"
+Attribute VB_GlobalNameSpace = False
+Attribute VB_Creatable = False
+Attribute VB_PredeclaredId = True
+Attribute VB_Exposed = False
+
+
+Private Sub btnOK_Click()
+
+    Unload Me
+    
+End Sub
+
+Private Sub lblFM20URL_Click()
+  ShellExecute hwnd, "Open", lblFM20URL.Caption, "", App.path, 1
+End Sub
Index: /DRBLLiveHelper/InstallHPDialog.frm
===================================================================
--- /DRBLLiveHelper/InstallHPDialog.frm	(revision 33)
+++ /DRBLLiveHelper/InstallHPDialog.frm	(revision 33)
@@ -0,0 +1,112 @@
+VERSION 5.00
+Object = "{0D452EE1-E08F-101A-852E-02608C4D0BB4}#2.0#0"; "FM20.DLL"
+Begin VB.Form InstallHPDialog 
+   BackColor       =   &H00FFFFFF&
+   BorderStyle     =   3  'Âù½u©T©w¹ï¸Ü¤è¶ô
+   Caption         =   "DRBL Helper"
+   ClientHeight    =   1575
+   ClientLeft      =   4725
+   ClientTop       =   5325
+   ClientWidth     =   8175
+   Icon            =   "InstallHPDialog.frx":0000
+   LinkTopic       =   "Form1"
+   MaxButton       =   0   'False
+   MinButton       =   0   'False
+   ScaleHeight     =   1575
+   ScaleWidth      =   8175
+   ShowInTaskbar   =   0   'False
+   Begin MSForms.CommandButton btnOK 
+      Height          =   375
+      Left            =   0
+      TabIndex        =   3
+      Top             =   1200
+      Width           =   1215
+      Caption         =   "Close"
+      Size            =   "2143;661"
+      FontName        =   "·s²Ó©úÅé"
+      FontHeight      =   180
+      FontCharSet     =   136
+      FontPitchAndFamily=   34
+      ParagraphAlign  =   3
+   End
+   Begin VB.Label lbl 
+      BackStyle       =   0  '³z©ú
+      ForeColor       =   &H0000C000&
+      Height          =   375
+      Left            =   1440
+      TabIndex        =   2
+      Top             =   240
+      Width           =   4695
+   End
+   Begin VB.Label lbuHPURL 
+      BackStyle       =   0  '³z©ú
+      Caption         =   "ftp://ftp.compaq.com/pub/softpaq/sp27001-27500/SP27213.exe"
+      BeginProperty Font 
+         Name            =   "Arial"
+         Size            =   9
+         Charset         =   0
+         Weight          =   400
+         Underline       =   -1  'True
+         Italic          =   0   'False
+         Strikethrough   =   0   'False
+      EndProperty
+      ForeColor       =   &H00FF0000&
+      Height          =   375
+      Left            =   1440
+      TabIndex        =   1
+      Top             =   720
+      Width           =   5415
+   End
+   Begin VB.Label lblMsg 
+      BackColor       =   &H00C0FFFF&
+      Height          =   1815
+      Left            =   1200
+      TabIndex        =   0
+      Top             =   0
+      Width           =   6975
+   End
+   Begin VB.Image Image1 
+      Height          =   1215
+      Left            =   0
+      Picture         =   "InstallHPDialog.frx":0CCA
+      Stretch         =   -1  'True
+      Top             =   0
+      Width           =   1215
+   End
+End
+Attribute VB_Name = "InstallHPDialog"
+Attribute VB_GlobalNameSpace = False
+Attribute VB_Creatable = False
+Attribute VB_PredeclaredId = True
+Attribute VB_Exposed = False
+
+Private Sub btnOK_Click()
+  Unload Me
+End Sub
+
+
+Private Sub Form_Load()
+   SetLocale
+End Sub
+
+Public Sub SetLocale()
+  lbl.Caption = "No ""HP USB Disk Storage Format Tool"" installed is Detected, " & Chr(10) + Chr(13) & _
+                   "Please click the following link to install.."
+                   
+    'Internalization
+    If (LoadLocalizedResources) Then
+       ' Pull a string resource out of a local resource
+       ' object for demonstration purposes.
+       'Me.Caption = GetString()
+       btnOK.Caption = GetString(14)
+       lbl.Caption = GetString(15)
+       
+    End If
+    '
+End Sub
+
+Private Sub lbuHPURL_Click()
+
+  ShellExecute hwnd, "Open", lbuHPURL.Caption, "", App.path, 1
+
+End Sub
Index: /DRBLLiveHelper/InstallPage.frm
===================================================================
--- /DRBLLiveHelper/InstallPage.frm	(revision 33)
+++ /DRBLLiveHelper/InstallPage.frm	(revision 33)
@@ -0,0 +1,270 @@
+VERSION 5.00
+Object = "{0D452EE1-E08F-101A-852E-02608C4D0BB4}#2.0#0"; "FM20.DLL"
+Begin VB.Form InstallPage 
+   BackColor       =   &H00FFFFFF&
+   Caption         =   "DRBL Helper"
+   ClientHeight    =   1935
+   ClientLeft      =   4305
+   ClientTop       =   5565
+   ClientWidth     =   7560
+   Icon            =   "InstallPage.frx":0000
+   MaxButton       =   0   'False
+   ScaleHeight     =   1935
+   ScaleWidth      =   7560
+   Begin MSForms.CommandButton cmdExit 
+      Height          =   375
+      Left            =   6240
+      TabIndex        =   8
+      Top             =   1440
+      Width           =   1215
+      Caption         =   "Exit"
+      Size            =   "2143;661"
+      FontName        =   "·s²Ó©úÅé"
+      FontHeight      =   180
+      FontCharSet     =   136
+      FontPitchAndFamily=   34
+      ParagraphAlign  =   3
+   End
+   Begin MSForms.CommandButton cmdNext 
+      Height          =   375
+      Left            =   4920
+      TabIndex        =   7
+      Top             =   1440
+      Width           =   1215
+      Caption         =   "Next"
+      Size            =   "2143;661"
+      FontName        =   "·s²Ó©úÅé"
+      FontHeight      =   180
+      FontCharSet     =   136
+      FontPitchAndFamily=   34
+      ParagraphAlign  =   3
+   End
+   Begin MSForms.CommandButton cmdPrevious 
+      Height          =   375
+      Left            =   3600
+      TabIndex        =   6
+      Top             =   1440
+      Width           =   1215
+      Caption         =   "Previous"
+      Size            =   "2143;661"
+      FontName        =   "·s²Ó©úÅé"
+      FontHeight      =   180
+      FontCharSet     =   136
+      FontPitchAndFamily=   34
+      ParagraphAlign  =   3
+   End
+   Begin MSForms.CommandButton cmdRun 
+      Height          =   375
+      Left            =   1680
+      TabIndex        =   5
+      Top             =   960
+      Width           =   2775
+      Caption         =   "Install image"
+      Size            =   "4895;661"
+      FontName        =   "·s²Ó©úÅé"
+      FontHeight      =   180
+      FontCharSet     =   136
+      FontPitchAndFamily=   34
+      ParagraphAlign  =   3
+   End
+   Begin MSForms.CommandButton btnUpdate 
+      Height          =   375
+      Left            =   6000
+      TabIndex        =   4
+      Top             =   480
+      Width           =   1455
+      Caption         =   "Browse"
+      Size            =   "2566;661"
+      FontName        =   "·s²Ó©úÅé"
+      FontHeight      =   180
+      FontCharSet     =   136
+      FontPitchAndFamily=   34
+      ParagraphAlign  =   3
+   End
+   Begin MSForms.TextBox txtPath 
+      Height          =   375
+      Left            =   3600
+      TabIndex        =   3
+      Top             =   480
+      Width           =   2295
+      VariousPropertyBits=   746604571
+      Size            =   "4048;661"
+      FontName        =   "·s²Ó©úÅé"
+      FontHeight      =   180
+      FontCharSet     =   136
+      FontPitchAndFamily=   34
+   End
+   Begin MSForms.Label lbl3 
+      Height          =   495
+      Left            =   1680
+      TabIndex        =   2
+      Top             =   480
+      Width           =   1935
+      ForeColor       =   12632064
+      BackColor       =   16777215
+      VariousPropertyBits=   8388627
+      Caption         =   "Select Image"
+      Size            =   "3413;873"
+      FontName        =   "·s²Ó©úÅé"
+      FontHeight      =   180
+      FontCharSet     =   136
+      FontPitchAndFamily=   34
+   End
+   Begin MSForms.Label lbl2 
+      Height          =   255
+      Left            =   3960
+      TabIndex        =   1
+      Top             =   120
+      Width           =   1455
+      ForeColor       =   16711680
+      BackColor       =   16777215
+      VariousPropertyBits=   8388627
+      Size            =   "2566;450"
+      FontName        =   "·s²Ó©úÅé"
+      FontHeight      =   180
+      FontCharSet     =   136
+      FontPitchAndFamily=   34
+   End
+   Begin MSForms.Label lbl1 
+      Height          =   375
+      Left            =   1680
+      TabIndex        =   0
+      Top             =   120
+      Width           =   2295
+      ForeColor       =   12632064
+      BackColor       =   16777215
+      VariousPropertyBits=   8388627
+      Caption         =   "USB flash drive"
+      Size            =   "4048;661"
+      FontName        =   "·s²Ó©úÅé"
+      FontHeight      =   180
+      FontCharSet     =   136
+      FontPitchAndFamily=   34
+   End
+   Begin VB.Image Image1 
+      Height          =   1935
+      Left            =   0
+      Picture         =   "InstallPage.frx":0CCA
+      Stretch         =   -1  'True
+      Top             =   0
+      Width           =   1935
+   End
+End
+Attribute VB_Name = "InstallPage"
+Attribute VB_GlobalNameSpace = False
+Attribute VB_Creatable = False
+Attribute VB_PredeclaredId = True
+Attribute VB_Exposed = False
+Dim msg As String
+
+Private Sub btnUpdate_Click()
+    Dim sFilter, TempPath As String
+    'set the filter: show text files and all the files
+    sFilter = "Zip files (*.zip)|*.zip|All files (*.*)|*.*"
+    'let the user select a file, ensuring that it exists
+    TempPath = ShowOpenFileDialog(sFilter, "txt", ".\", OFN_FILEMUSTEXIST)
+    If TempPath <> "" Then
+       txtPath.Text = TempPath
+    End If
+End Sub
+
+Private Sub cmdExit_Click()
+
+
+    
+    If FormatPage.Visible = False Then
+        Unload FormatPage
+    End If
+    
+    If BootPage.Visible = False Then
+        Unload BootPage
+    End If
+    
+    If LanguagePage.Visible = False Then
+        Unload LanguagePage
+    End If
+    
+    
+    Unload Me
+        
+End Sub
+
+
+Private Sub cmdNext_Click()
+   Me.Hide
+   BootPage.Show
+End Sub
+
+Private Sub cmdPrevious_Click()
+    Me.Hide
+    FormatPage.Show
+End Sub
+
+Private Sub cmdRun_Click()
+    If (Not FileExists(txtPath.Text)) Then
+      'MsgBox msg
+      ReadyDialog.lblMsg.Caption = msg
+      AlwaysOnTop ReadyDialog, True
+      ReadyDialog.Show
+      Exit Sub
+    End If
+    
+    Dim strDir As String, tmpDir As String, strCmd As String, strCmdPrefix As String
+    
+    'Create DRBLLive Disk
+    strDir = "DRBLLive\"
+    tmpDir = GetTempDir & strDir
+    strCmdPrefix = "cmd /C"
+    
+    strCmd = strCmdPrefix & " md " & tmpDir
+    ExecCmd strCmd
+   
+    
+    args = "x """ & txtPath.Text & """ -o" & tmpDir & " -y "
+    strCmd = """" & G_LibPath & "7za.exe"" " & args
+    ExecCmd strCmd
+    
+    
+    strCmd = strCmdPrefix & " xcopy /E /Y """ & tmpDir & "*"" " & GetDriveID & ":\"
+    ExecCmd strCmd
+    
+    
+    strCmd = strCmdPrefix & " rmdir /S /Q """ & tmpDir & """"
+    ExecCmd strCmd
+    
+    ReadyDialog.lblMsg.Caption = GetString(13)
+    AlwaysOnTop ReadyDialog, True
+    ReadyDialog.Show
+End Sub
+
+Private Sub Form_Load()
+    Me.Top = BootPage.Top
+    Me.Left = BootPage.Left
+   SetLocale
+End Sub
+
+Public Sub SetLocale()
+    msg = "Please select the archive file of DRBLLive."
+
+    lbl2.Caption = GetDriveID
+    '
+    If (LoadLocalizedResources) Then
+       ' Pull a string resource out of a local resource
+       ' object for demonstration purposes.
+       lbl1.Caption = GetString(5)
+       lbl3.Caption = GetString(7)
+       btnUpdate.Caption = GetString(9)
+       cmdRun.Caption = GetString(8)
+       cmdNext.Caption = GetString(3)
+       cmdPrevious.Caption = GetString(16)
+       cmdExit.Caption = GetString(4)
+       'Me.Caption = GetString()
+       msg = GetString(10)
+    End If
+
+End Sub
+
+Private Sub Form_Unload(Cancel As Integer)
+   cmdExit_Click
+End Sub
+
Index: /DRBLLiveHelper/Internationalization.bas
===================================================================
--- /DRBLLiveHelper/Internationalization.bas	(revision 33)
+++ /DRBLLiveHelper/Internationalization.bas	(revision 33)
@@ -0,0 +1,274 @@
+Attribute VB_Name = "Internationalization"
+Option Explicit
+
+Dim Resources() As String
+Dim Languages() As String
+Dim LangPath() As String
+Dim lang_fname As String
+Dim isResLoaded As Boolean
+Dim isLangLoaded As Boolean
+Dim currLangPath As String
+Dim currLangIndex As Integer
+
+Public Declare Function GetUserDefaultLCID Lib "kernel32" () As Long
+Private clsSatellite As Object
+
+Public Function LoadLocalizedResources_dll() As Boolean
+   Dim lLocalID As String
+
+   ' Find the LocalID.
+   lLocalID = Hex(GetUserDefaultLCID)
+
+   ' Load the Satellite DLL that contains the local
+   ' resource object to be used. If CreateObject
+   ' fails, there is no local version of the
+   ' resources.
+    
+   On Error GoTo NoLocalResource
+
+   ' Create a local object containing resources.
+   'Set clsSatellite = CreateObject("Language" & lLocalID & ".clsResources")
+   Set clsSatellite = CreateObject("Language.clsResources")
+   ' Return true, then read local resources.
+   LoadLocalizedResources_dll = True
+   Exit Function
+
+NoLocalResource:
+
+   ' There is no local satellite DLL. As a result, false is returned.
+
+   LoadLocalizedResources_dll = False
+
+End Function
+      
+' GetString will access the object and return the string
+' resources specific to the region. For this example, only
+' basic error handling is implemented.
+
+Public Function GetString_dll(StringIndex As Long) As String
+
+ ' Make sure there is a resource object.
+   If Not (clsSatellite Is Nothing) Then
+      ' Get the resource from the resource object.
+      GetString_dll = clsSatellite.GetResourceString(StringIndex)
+   Else
+     ' For this example, if there is no resource
+     ' object something is still returned.
+     GetString_dll = "Error : No Local Data"
+   End If
+End Function
+      
+Public Function LoadLocalizedResources() As Boolean
+   
+    'If isResLoaded Then
+       'Exit Function
+    'End If
+    
+    Dim isUniCode As Boolean
+    
+    If currLangPath = "" Or Not FileExists(currLangPath) Then
+      LoadLocalizedResources = False
+      Exit Function
+    End If
+    
+    isUniCode = IsUnicodeFile(currLangPath)
+    
+    If isUniCode Then
+       Resources = ParseUnicodeFile(currLangPath)
+    Else
+       Resources = ParseAsciiFile(currLangPath)
+    End If
+    
+    LoadLocalizedResources = True
+    isResLoaded = True
+    
+End Function
+
+
+Public Function GetString(StringIndex As Long) As String
+ 
+   If UBound(Resources) > StringIndex Then
+      ' Get the resource from the resource array.
+      GetString = Resources(StringIndex)
+   Else
+     ' For this example, if there is no resource
+     ' array something is still returned.
+     GetString = "Error : No Local Data"
+   End If
+End Function
+
+
+    
+Public Function ParseUnicodeLangFile(ByVal fname As String)
+
+    Dim OutRec As String, uniCode As String, str() As String
+    
+    ReDim Languages(30)
+    ReDim LangPath(30)
+    
+    Dim pos As Integer
+    
+    Open fname For Binary As #1
+    
+    uniCode = InputB(2, #1)
+        
+    OutRec = ""
+    pos = 0
+    
+    Do While Not EOF(1)
+        
+        uniCode = InputB(2, #1)
+        
+        If EOF(1) Then
+           Exit Do
+        End If
+        
+        Select Case AscW(uniCode)
+            Case AscW(vbNewLine)
+                uniCode = InputB(2, #1)
+                              
+                If Trim$(OutRec) <> "" Then
+                   str = Split(OutRec, "=")
+             
+                   If UBound(str) > 0 Then
+                      
+                      If pos >= UBound(Languages) Or pos >= UBound(LangPath) Then
+                         ReDim Languages(pos + 10)
+                         ReDim LangPath(pos + 10)
+                      End If
+                      Languages(pos) = str(0)
+                      LangPath(pos) = str(1)
+                      pos = pos + 1
+                   End If
+                End If
+                   
+                OutRec = ""
+            Case Else
+                OutRec = OutRec & uniCode
+                
+        End Select
+    
+    Loop
+        
+    
+    
+    If Trim$(OutRec) <> "" Then
+        str = Split(OutRec, "=")
+             
+        If UBound(str) > 0 Then
+           Languages(pos) = str(0)
+           LangPath(pos) = str(1)
+        End If
+    End If
+        
+    Close #1
+
+
+End Function
+
+
+Public Function ParseAsciiLangFile(ByVal fname As String)
+    Dim OutRec As String
+    Dim str() As String
+    
+    ReDim Languages(30)
+    ReDim LangPath(30)
+    Dim pos As Integer
+    
+    Open fname For Input Access Read Shared As #1
+       
+    Do While Not EOF(1)
+        
+        Line Input #1, OutRec
+        
+        
+        If Trim$(OutRec) <> "" Then
+           str = Split(OutRec, "=")
+             
+           If UBound(str) > 0 Then
+              If pos >= UBound(Languages) Or pos >= UBound(LangPath) Then
+                 ReDim Languages(pos + 10)
+                 ReDim LangPath(pos + 10)
+              End If
+              Languages(pos) = str(0)
+              LangPath(pos) = str(1)
+              pos = pos + 1
+           End If
+         End If
+
+    Loop
+    
+    Close #1
+    
+    
+End Function
+
+Public Function LoadLanguages() As Boolean
+    
+    If isLangLoaded Then
+       LoadLanguages = True
+       Exit Function
+    End If
+    
+    Dim isUniCode As Boolean
+    
+    If lang_fname = "" Then
+       lang_fname = "languages\Language.txt"
+    End If
+    
+    If Not FileExists(lang_fname) Then
+      LoadLanguages = False
+      Exit Function
+    End If
+    
+    isUniCode = IsUnicodeFile(lang_fname)
+    
+    If isUniCode Then
+       ParseUnicodeLangFile (lang_fname)
+    Else
+       ParseAsciiLangFile (lang_fname)
+    End If
+    
+    LoadLanguages = True
+    
+End Function
+      
+Public Function GetLanguageName(StringIndex As Long) As String
+   
+   If UBound(Languages) > StringIndex And StringIndex >= 0 Then
+      GetLanguageName = Languages(StringIndex)
+   Else
+      GetLanguageName = "Error : No Language Data"
+   End If
+
+End Function
+      
+Public Function GetLanguagePath(StringIndex As Long) As String
+   
+   If UBound(LangPath) > StringIndex And StringIndex >= 0 Then
+      GetLanguagePath = LangPath(StringIndex)
+   Else
+      GetLanguagePath = "Error : No Language Data"
+   End If
+
+End Function
+
+Public Function GetLanguages() As String()
+   GetLanguages = Languages
+End Function
+
+Public Function SetCurrLangPath(ByVal path As String)
+   currLangPath = path
+End Function
+
+Public Function GetCurrLangPath() As String
+   GetCurrLangPath = currLangPath
+End Function
+
+Public Function GetCurrLangIndex() As Integer
+   GetCurrLangIndex = currLangIndex
+End Function
+
+Public Function SetCurrLangIndex(ByVal index As Integer)
+   currLangIndex = index
+End Function
Index: /DRBLLiveHelper/LanguagePage.frm
===================================================================
--- /DRBLLiveHelper/LanguagePage.frm	(revision 33)
+++ /DRBLLiveHelper/LanguagePage.frm	(revision 33)
@@ -0,0 +1,203 @@
+VERSION 5.00
+Object = "{0D452EE1-E08F-101A-852E-02608C4D0BB4}#2.0#0"; "FM20.DLL"
+Begin VB.Form LanguagePage 
+   BackColor       =   &H00FFFFFF&
+   Caption         =   "DRBL Helper"
+   ClientHeight    =   1935
+   ClientLeft      =   4305
+   ClientTop       =   5565
+   ClientWidth     =   7560
+   Icon            =   "LanguagePage.frx":0000
+   LinkTopic       =   "Form1"
+   ScaleHeight     =   1935
+   ScaleWidth      =   7560
+   Begin VB.Label lbl3 
+      BackStyle       =   0  '³z©ú
+      Caption         =   "http://clonezilla.sf.net"
+      BeginProperty Font 
+         Name            =   "Arial"
+         Size            =   9
+         Charset         =   0
+         Weight          =   400
+         Underline       =   -1  'True
+         Italic          =   0   'False
+         Strikethrough   =   0   'False
+      EndProperty
+      ForeColor       =   &H00FF8080&
+      Height          =   255
+      Left            =   1920
+      TabIndex        =   4
+      Top             =   1200
+      Width           =   2535
+   End
+   Begin VB.Label lbl2 
+      BackStyle       =   0  '³z©ú
+      Caption         =   "http://drbl.sf.net"
+      BeginProperty Font 
+         Name            =   "Arial"
+         Size            =   9
+         Charset         =   0
+         Weight          =   400
+         Underline       =   -1  'True
+         Italic          =   0   'False
+         Strikethrough   =   0   'False
+      EndProperty
+      ForeColor       =   &H00FF8080&
+      Height          =   255
+      Left            =   1920
+      TabIndex        =   3
+      Top             =   840
+      Width           =   1455
+   End
+   Begin MSForms.Label lbl1 
+      Height          =   375
+      Left            =   1920
+      TabIndex        =   2
+      Top             =   360
+      Width           =   1335
+      ForeColor       =   12632064
+      BackColor       =   16777215
+      VariousPropertyBits=   8388627
+      Caption         =   "Select Language"
+      Size            =   "2355;661"
+      FontName        =   "·s²Ó©úÅé"
+      FontHeight      =   180
+      FontCharSet     =   136
+      FontPitchAndFamily=   34
+   End
+   Begin MSForms.CommandButton cmdOK 
+      Height          =   375
+      Left            =   5760
+      TabIndex        =   1
+      Top             =   360
+      Width           =   1335
+      Caption         =   "Confirm"
+      Size            =   "2355;661"
+      FontName        =   "·s²Ó©úÅé"
+      FontHeight      =   180
+      FontCharSet     =   136
+      FontPitchAndFamily=   34
+      ParagraphAlign  =   3
+   End
+   Begin MSForms.ComboBox LangCombo 
+      Height          =   375
+      Left            =   3360
+      TabIndex        =   0
+      Top             =   360
+      Width           =   2295
+      VariousPropertyBits=   746604571
+      DisplayStyle    =   3
+      Size            =   "4048;661"
+      MatchEntry      =   1
+      ShowDropButtonWhen=   2
+      FontName        =   "·s²Ó©úÅé"
+      FontHeight      =   180
+      FontCharSet     =   136
+      FontPitchAndFamily=   34
+   End
+   Begin VB.Image Image1 
+      Height          =   1935
+      Left            =   0
+      Picture         =   "LanguagePage.frx":0CCA
+      Stretch         =   -1  'True
+      Top             =   0
+      Width           =   1935
+   End
+End
+Attribute VB_Name = "LanguagePage"
+Attribute VB_GlobalNameSpace = False
+Attribute VB_Creatable = False
+Attribute VB_PredeclaredId = True
+Attribute VB_Exposed = False
+
+Private Sub cmdOK_Click()
+    
+  SetCurrLangPath (GetLanguagePath(LangCombo.ListIndex))
+  SetCurrLangIndex LangCombo.ListIndex
+  
+  'MsgBox GetCurrLangPath()
+  FormatPage.SetLocale
+  InstallPage.SetLocale
+  BootPage.SetLocale
+  InstallHPDialog.SetLocale
+  ReadyDialog.SetLocale
+  
+  FormatPage.Show
+  Unload Me
+End Sub
+
+Private Sub Form_Load()
+  Dim index As Integer
+  Me.Top = FormatPage.Top
+  Me.Left = FormatPage.Left
+  'SetLocale
+    
+  If Not LoadLanguages Then
+       Exit Sub
+  End If
+  
+  Dim langs() As String
+  Dim pos As Integer
+  pos = 0
+  
+  langs = GetLanguages
+  
+  Do While pos < UBound(langs)
+     If langs(pos) <> "" Then
+        LangCombo.AddItem langs(pos)
+        
+     End If
+     pos = pos + 1
+  Loop
+  index = GetCurrLangIndex
+  
+  If index > -1 And index < LangCombo.ListCount Then
+     LangCombo.ListIndex = index
+  End If
+  
+  LangCombo_Change
+  
+End Sub
+
+Public Sub SetLocale()
+  If (LoadLocalizedResources) Then
+     lbl1.Caption = GetString(17)
+     cmdOK.Caption = GetString(14)
+  End If
+End Sub
+
+Private Sub Form_Unload(Cancel As Integer)
+    If InstallPage.Visible = False Then
+        Unload InstallPage
+    End If
+    
+    If FormatPage.Visible = False Then
+        Unload FormatPage
+    End If
+    
+    If BootPage.Visible = False Then
+        Unload BootPage
+    End If
+    
+    If InstallHPDialog.Visible = False Then
+        Unload InstallHPDialog
+    End If
+    
+    If ReadyDialog.Visible = False Then
+        Unload ReadyDialog
+    End If
+    
+End Sub
+
+Private Sub LangCombo_Change()
+    SetCurrLangPath (GetLanguagePath(LangCombo.ListIndex))
+    SetLocale
+End Sub
+
+Private Sub lbl2_Click()
+    ShellExecute hwnd, "Open", lbl2.Caption, "", App.path, 1
+End Sub
+
+Private Sub lbl3_Click()
+    ShellExecute hwnd, "Open", lbl3.Caption, "", App.path, 1
+End Sub
Index: /DRBLLiveHelper/MainModule.bas
===================================================================
--- /DRBLLiveHelper/MainModule.bas	(revision 33)
+++ /DRBLLiveHelper/MainModule.bas	(revision 33)
@@ -0,0 +1,13 @@
+Attribute VB_Name = "MainModule"
+Sub Main()
+
+    Key = GetRegKeyValue(HKEY_CLASSES_ROOT, _
+                          "CLSID\{1C3B4210-F441-11CE-B9EA-00AA006B1A69}\InprocServer32", "")
+        
+    If FileExists(Key) Then
+       LanguagePage.Show
+    Else
+       InstallFM20.Show
+    End If
+  
+End Sub
Index: /DRBLLiveHelper/Project.vbp
===================================================================
--- /DRBLLiveHelper/Project.vbp	(revision 33)
+++ /DRBLLiveHelper/Project.vbp	(revision 33)
@@ -0,0 +1,52 @@
+Type=Exe
+Reference=*\G{00020430-0000-0000-C000-000000000046}#2.0#0#C:\WINDOWS\system32\stdole2.tlb#OLE Automation
+Module=FTPModule; FTPModule.bas
+Module=RegkeyModule; RegkeyModule.bas
+Form=InstallHPDialog.frm
+Module=CommonModule; CommonModule.bas
+Form=ReadyDialog.frm
+Module=Internationalization; Internationalization.bas
+Form=FormatPage.frm
+Form=BootPage.frm
+Form=InstallPage.frm
+Object={0D452EE1-E08F-101A-852E-02608C4D0BB4}#2.0#0; FM20.DLL
+Form=LanguagePage.frm
+Module=MainModule; MainModule.bas
+Form=InstallFM20.frm
+IconForm="LanguagePage"
+Startup="Sub Main"
+HelpFile=""
+Title="DRBLLiveHelper"
+ExeName32="DRBLLiveHelper.exe"
+Command32=""
+Name="DRBLLiveHelper"
+HelpContextID="0"
+CompatibleMode="0"
+MajorVer=0
+MinorVer=0
+RevisionVer=2
+AutoIncrementVer=0
+ServerSupportFiles=0
+VersionCompanyName="nchc"
+VersionLegalCopyright="GPL"
+VersionLegalTrademarks="DRBL"
+VersionProductName="DRBL Live Helper"
+CompilationType=0
+OptimizationType=0
+FavorPentiumPro(tm)=0
+CodeViewDebugInfo=0
+NoAliasing=0
+BoundsCheck=0
+OverflowCheck=0
+FlPointCheck=0
+FDIVCheck=0
+UnroundedFP=0
+StartMode=0
+Unattended=0
+Retained=0
+ThreadPerObject=0
+MaxNumberOfThreads=1
+DebugStartupOption=0
+
+[MS Transaction Server]
+AutoRefresh=1
Index: /DRBLLiveHelper/Project.vbw
===================================================================
--- /DRBLLiveHelper/Project.vbw	(revision 33)
+++ /DRBLLiveHelper/Project.vbw	(revision 33)
@@ -0,0 +1,12 @@
+FTPModule = 76, 29, 585, 469, C
+RegkeyModule = -13, 85, 695, 525, C
+InstallHPDialog = -127, 171, 614, 611, C, 22, 47, 638, 257, C
+CommonModule = -122, 137, 597, 813, C
+ReadyDialog = 29, 51, 559, 491, C, 30, 147, 560, 587, C
+Internationalization = -221, 137, 600, 917, C
+FormatPage = -226, 154, 607, 890, C, 11, 6, 570, 243, C
+BootPage = -113, 51, 668, 665, C, 11, 16, 580, 248, C
+InstallPage = -249, 58, 532, 672, C, 16, 206, 701, 443, C
+LanguagePage = 22, 29, 659, 651, C, 23, 87, 660, 350, C
+MainModule = -105, 155, 680, 776, C
+InstallFM20 = -87, 229, 653, 850, C, -142, 220, 650, 396, C
Index: /DRBLLiveHelper/ReadyDialog.frm
===================================================================
--- /DRBLLiveHelper/ReadyDialog.frm	(revision 33)
+++ /DRBLLiveHelper/ReadyDialog.frm	(revision 33)
@@ -0,0 +1,83 @@
+VERSION 5.00
+Object = "{0D452EE1-E08F-101A-852E-02608C4D0BB4}#2.0#0"; "FM20.DLL"
+Begin VB.Form ReadyDialog 
+   BackColor       =   &H00FFFFFF&
+   BorderStyle     =   3  'Âù½u©T©w¹ï¸Ü¤è¶ô
+   Caption         =   "DRBL Helper"
+   ClientHeight    =   1080
+   ClientLeft      =   5235
+   ClientTop       =   5325
+   ClientWidth     =   5175
+   Icon            =   "ReadyDialog.frx":0000
+   LinkTopic       =   "Form1"
+   MaxButton       =   0   'False
+   MinButton       =   0   'False
+   ScaleHeight     =   1080
+   ScaleWidth      =   5175
+   ShowInTaskbar   =   0   'False
+   Begin MSForms.CommandButton btnOK 
+      Height          =   375
+      Left            =   1320
+      TabIndex        =   1
+      Top             =   720
+      Width           =   1215
+      Caption         =   "Close"
+      Size            =   "2143;661"
+      FontName        =   "·s²Ó©úÅé"
+      FontHeight      =   180
+      FontCharSet     =   136
+      FontPitchAndFamily=   34
+      ParagraphAlign  =   3
+   End
+   Begin MSForms.Label lblMsg 
+      Height          =   375
+      Left            =   1200
+      TabIndex        =   0
+      Top             =   240
+      Width           =   3975
+      ForeColor       =   12632256
+      BackColor       =   12648447
+      Caption         =   "Installed Successfully !!"
+      Size            =   "7011;661"
+      FontName        =   "·s²Ó©úÅé"
+      FontHeight      =   180
+      FontCharSet     =   136
+      FontPitchAndFamily=   34
+   End
+   Begin VB.Image Image1 
+      Height          =   1095
+      Left            =   0
+      Picture         =   "ReadyDialog.frx":0CCA
+      Stretch         =   -1  'True
+      Top             =   0
+      Width           =   1215
+   End
+End
+Attribute VB_Name = "ReadyDialog"
+Attribute VB_GlobalNameSpace = False
+Attribute VB_Creatable = False
+Attribute VB_PredeclaredId = True
+Attribute VB_Exposed = False
+
+Option Explicit
+
+Private Sub btnOK_Click()
+  Unload Me
+End Sub
+
+Private Sub Form_Load()
+   SetLocale
+End Sub
+
+Public Sub SetLocale()
+    'Internalization
+    If (LoadLocalizedResources) Then
+       ' Pull a string resource out of a local resource
+       ' object for demonstration purposes.
+       'Me.Caption = GetString()
+       btnOK.Caption = GetString(14)
+       'lblMsg.Caption = GetString(13)
+       
+    End If
+    '
+End Sub
Index: /DRBLLiveHelper/RegkeyModule.bas
===================================================================
--- /DRBLLiveHelper/RegkeyModule.bas	(revision 33)
+++ /DRBLLiveHelper/RegkeyModule.bas	(revision 33)
@@ -0,0 +1,74 @@
+Attribute VB_Name = "RegkeyModule"
+Option Explicit
+
+Public Const HKEY_CLASSES_ROOT = &H80000000
+Public Const HKEY_CURRENT_CONFIG = &H80000005
+Public Const HKEY_CURRENT_USER = &H80000001
+Public Const HKEY_LOCAL_MACHINE = &H80000002
+Public Const HKEY_USERS = &H80000003
+
+Public Declare Function RegOpenKeyEx Lib "advapi32.dll" Alias "RegOpenKeyExA" (ByVal hKey As Long, ByVal lpSubKey As String, ByVal ulOptions As Long, ByVal samDesired As Long, phkResult As Long) As Long
+Public Declare Function RegQueryValueEx Lib "advapi32.dll" Alias "RegQueryValueExA" (ByVal hKey As Long, ByVal lpValueName As String, ByVal lpReserved As Long, lpType As Long, lpData As Any, lpcbData As Long) As Long
+Public Declare Function RegCloseKey Lib "advapi32.dll" (ByVal hKey As Long) As Long
+
+Public Const ERROR_SUCCESS = 0&
+
+Public Const STANDARD_RIGHTS_ALL = &H1F0000
+Public Const KEY_QUERY_VALUE = &H1
+Public Const KEY_SET_VALUE = &H2
+Public Const KEY_CREATE_SUB_KEY = &H4
+Public Const KEY_ENUMERATE_SUB_KEYS = &H8
+Public Const KEY_NOTIFY = &H10
+Public Const KEY_CREATE_LINK = &H20
+Public Const SYNCHRONIZE = &H100000
+Public Const KEY_ALL_ACCESS = _
+    ((STANDARD_RIGHTS_ALL Or _
+    KEY_QUERY_VALUE Or _
+    KEY_SET_VALUE Or _
+    KEY_CREATE_SUB_KEY Or _
+    KEY_ENUMERATE_SUB_KEYS Or _
+    KEY_NOTIFY Or KEY_CREATE_LINK) And _
+    (Not SYNCHRONIZE))
+    
+' Return a registry key value.
+Public Function GetRegKeyValue(ByVal root As Long, ByVal key_name As String, ByVal subkey_name As String) As String
+Dim hKey As Long
+Dim value As String
+Dim length As Long
+Dim value_type As Long
+    GetRegKeyValue = ""
+    ' Open the key.
+    If RegOpenKeyEx(root, key_name, _
+        0&, KEY_QUERY_VALUE, hKey) <> ERROR_SUCCESS _
+    Then
+        'MsgBox "Error opening key."
+        Exit Function
+    End If
+
+    ' Get the subkey's size.
+    If RegQueryValueEx(hKey, subkey_name, _
+        0&, value_type, ByVal 0&, length) _
+            <> ERROR_SUCCESS _
+    Then
+        'MsgBox "Error getting subkey length."
+    End If
+
+    ' Get the subkey's value.
+    value = Space$(length)
+    If RegQueryValueEx(hKey, subkey_name, _
+        0&, value_type, ByVal value, length) _
+            <> ERROR_SUCCESS _
+    Then
+        'MsgBox "Error getting subkey value."
+    Else
+        ' Remove the trailing null character.
+        GetRegKeyValue = Left$(value, length - 1)
+    End If
+
+    ' Close the key.
+    If RegCloseKey(hKey) <> ERROR_SUCCESS Then
+        'MsgBox "Error closing key."
+    End If
+End Function
+
+
Index: /DRBLLiveHelper/drbllive.nsi
===================================================================
--- /DRBLLiveHelper/drbllive.nsi	(revision 33)
+++ /DRBLLiveHelper/drbllive.nsi	(revision 33)
@@ -0,0 +1,238 @@
+; Script generated by the HM NIS Edit Script Wizard.
+
+; HM NIS Edit Wizard helper defines
+!define PRODUCT_NAME "DRBLLiveHelper"
+!define PRODUCT_VERSION "0.0.2"
+!define PRODUCT_PUBLISHER "NCHC"
+!define PRODUCT_WEB_SITE "http://drbl.nchc.org.tw"
+!define PRODUCT_DIR_REGKEY "Software\Microsoft\Windows\CurrentVersion\App Paths\DRBLLiveHelper.exe"
+!define PRODUCT_UNINST_KEY "Software\Microsoft\Windows\CurrentVersion\Uninstall\${PRODUCT_NAME}"
+!define PRODUCT_UNINST_ROOT_KEY "HKLM"
+!define PRODUCT_STARTMENU_REGVAL "NSIS:StartMenuDir"
+
+; MUI 1.67 compatible ------
+!include "MUI.nsh"
+
+; MUI Settings
+!define MUI_ABORTWARNING
+!define MUI_ICON "clonezilla_logo_transparent.ico"
+!define MUI_UNICON "clonezilla_logo_transparent.ico"
+
+; Language Selection Dialog Settings
+!define MUI_LANGDLL_REGISTRY_ROOT "${PRODUCT_UNINST_ROOT_KEY}"
+!define MUI_LANGDLL_REGISTRY_KEY "${PRODUCT_UNINST_KEY}"
+!define MUI_LANGDLL_REGISTRY_VALUENAME "NSIS:Language"
+
+; Welcome page
+!insertmacro MUI_PAGE_WELCOME
+; License page
+!define MUI_LICENSEPAGE_CHECKBOX
+!insertmacro MUI_PAGE_LICENSE "COPYING.txt"
+; Components page
+!insertmacro MUI_PAGE_COMPONENTS
+; Directory page
+!insertmacro MUI_PAGE_DIRECTORY
+; Start menu page
+var ICONS_GROUP
+!define MUI_STARTMENUPAGE_NODISABLE
+!define MUI_STARTMENUPAGE_DEFAULTFOLDER "DRBLLiveHelper"
+!define MUI_STARTMENUPAGE_REGISTRY_ROOT "${PRODUCT_UNINST_ROOT_KEY}"
+!define MUI_STARTMENUPAGE_REGISTRY_KEY "${PRODUCT_UNINST_KEY}"
+!define MUI_STARTMENUPAGE_REGISTRY_VALUENAME "${PRODUCT_STARTMENU_REGVAL}"
+!insertmacro MUI_PAGE_STARTMENU Application $ICONS_GROUP
+; Instfiles page
+!insertmacro MUI_PAGE_INSTFILES
+; Finish page
+!define MUI_FINISHPAGE_RUN "$INSTDIR\DRBLLiveHelper.exe"
+!define MUI_FINISHPAGE_SHOWREADME "$INSTDIR\COPYING.txt"
+!insertmacro MUI_PAGE_FINISH
+
+; Uninstaller pages
+!insertmacro MUI_UNPAGE_INSTFILES
+
+; Language files
+!insertmacro MUI_LANGUAGE "English"
+;!insertmacro MUI_LANGUAGE "TradChinese"
+
+; MUI end ------
+
+Name "${PRODUCT_NAME} ${PRODUCT_VERSION}"
+OutFile "DRBLLiveHelperSetup.exe"
+InstallDir "$PROGRAMFILES\DRBLLiveHelper"
+InstallDirRegKey HKLM "${PRODUCT_DIR_REGKEY}" ""
+ShowInstDetails show
+ShowUnInstDetails show
+
+Function .onInit
+  ;!insertmacro MUI_LANGDLL_DISPLAY
+FunctionEnd
+
+Section -Library ;-SEC01
+  CreateDirectory "$INSTDIR\lib"
+  SetOutPath "$INSTDIR\lib"
+  SetOverwrite ifnewer
+  File "lib\syslinux.exe"
+  File "lib\7za.exe"
+
+  CreateDirectory "$INSTDIR\languages"
+  SetOutPath "$INSTDIR\languages"
+  SetOverwrite ifnewer
+  File "languages\Language.txt"
+  File "languages\Language-en.txt"
+  File "languages\Language-fr.txt"
+  File "languages\Language-ja.txt"
+  File "languages\Language-nl.txt"
+  File "languages\Language-zh_tw.txt"
+  
+  SetOutPath "$INSTDIR"
+  File "DRBLLiveHelper.exe"
+  File "COPYING.txt"
+  File "AUTHORS.txt"
+  
+  ;Exec 'RegSvr32 /s "$INSTDIR\Language404.dll"'
+  ;RegDLL "$INSTDIR\Language404.dll"
+; Shortcuts
+  !insertmacro MUI_STARTMENU_WRITE_BEGIN Application
+  CreateDirectory "$SMPROGRAMS\$ICONS_GROUP"
+  CreateShortCut "$SMPROGRAMS\$ICONS_GROUP\DRBLLiveHelper.lnk" "$INSTDIR\DRBLLiveHelper.exe"
+  CreateShortCut "$DESKTOP\DRBLLiveHelper.lnk" "$INSTDIR\DRBLLiveHelper.exe"
+  !insertmacro MUI_STARTMENU_WRITE_END
+SectionEnd
+
+Section /o "Source" SEC02
+  CreateDirectory "$INSTDIR\src"
+  SetOutPath "$INSTDIR\src"
+  File "RegkeyModule.bas"
+  File "ReadyDialog.frx"
+  File "ReadyDialog.frm"
+  File "Project.vbw"
+  File "Project.vbp"
+  File "FormatPage.frm"
+  File "FormatPage.frx"
+  File "BootPage.frm"
+  File "BootPage.frx"
+  File "InstallPage.frm"
+  File "InstallPage.frx"
+  File "InstallHPDialog.frx"
+  File "InstallHPDialog.frm"
+  File "FTPModule.bas"
+  File "FormatDialog.frx"
+  File "FormatDialog.frm"
+  File "CommonModule.bas"
+  File "clonezilla_logo_transparent.ico"
+  File "clonezilla_logo_transparent.gif"
+  File "Internationalization.bas"
+  File "COPYING.txt"
+  File "AUTHORS.txt"
+  File "FormatDialog.frm"
+  File "FormatDialog.frx"
+  File "LanguagePage.frm"
+  File "LanguagePage.frx"
+  File "MainModule.bas"
+  File "InstallFM20.frm"
+  File "InstallFM20.frx"
+  
+; Shortcuts
+  !insertmacro MUI_STARTMENU_WRITE_BEGIN Application
+  !insertmacro MUI_STARTMENU_WRITE_END
+SectionEnd
+
+Section -AdditionalIcons
+  SetOutPath $INSTDIR
+  !insertmacro MUI_STARTMENU_WRITE_BEGIN Application
+  WriteIniStr "$INSTDIR\${PRODUCT_NAME}.url" "InternetShortcut" "URL" "${PRODUCT_WEB_SITE}"
+  ;CreateShortCut "$SMPROGRAMS\$ICONS_GROUP\Website.lnk" "$INSTDIR\${PRODUCT_NAME}.url"
+  CopyFiles "$INSTDIR\${PRODUCT_NAME}.url" "$SMPROGRAMS\$ICONS_GROUP\"
+  CreateShortCut "$SMPROGRAMS\$ICONS_GROUP\Uninstall.lnk" "$INSTDIR\uninst.exe"
+  
+  !insertmacro MUI_STARTMENU_WRITE_END
+SectionEnd
+
+Section -Post
+  WriteUninstaller "$INSTDIR\uninst.exe"
+  WriteRegStr HKLM "${PRODUCT_DIR_REGKEY}" "" "$INSTDIR\DRBLLiveHelper.exe"
+  WriteRegStr ${PRODUCT_UNINST_ROOT_KEY} "${PRODUCT_UNINST_KEY}" "DisplayName" "$(^Name)"
+  WriteRegStr ${PRODUCT_UNINST_ROOT_KEY} "${PRODUCT_UNINST_KEY}" "UninstallString" "$INSTDIR\uninst.exe"
+  WriteRegStr ${PRODUCT_UNINST_ROOT_KEY} "${PRODUCT_UNINST_KEY}" "DisplayIcon" "$INSTDIR\DRBLLiveHelper.exe"
+  WriteRegStr ${PRODUCT_UNINST_ROOT_KEY} "${PRODUCT_UNINST_KEY}" "DisplayVersion" "${PRODUCT_VERSION}"
+  WriteRegStr ${PRODUCT_UNINST_ROOT_KEY} "${PRODUCT_UNINST_KEY}" "URLInfoAbout" "${PRODUCT_WEB_SITE}"
+  WriteRegStr ${PRODUCT_UNINST_ROOT_KEY} "${PRODUCT_UNINST_KEY}" "Publisher" "${PRODUCT_PUBLISHER}"
+SectionEnd
+
+; Section descriptions
+!insertmacro MUI_FUNCTION_DESCRIPTION_BEGIN
+  !insertmacro MUI_DESCRIPTION_TEXT ${SEC02} "Source Code"
+!insertmacro MUI_FUNCTION_DESCRIPTION_END
+
+
+Function un.onUninstSuccess
+  HideWindow
+  MessageBox MB_ICONINFORMATION|MB_OK "DRBLLiveHelper installer has been removed."
+FunctionEnd
+
+Function un.onInit
+!insertmacro MUI_UNGETLANGUAGE
+  MessageBox MB_ICONQUESTION|MB_YESNO|MB_DEFBUTTON2 "Do you really want to remove DRBLLiveHelper installer from your computer¡H" IDYES +2
+  Abort
+FunctionEnd
+
+Section Uninstall
+  !insertmacro MUI_STARTMENU_GETFOLDER "Application" $ICONS_GROUP
+  UnRegDLL $INSTDIR\Language404.dll"
+  Delete "$INSTDIR\${PRODUCT_NAME}.url"
+  Delete "$INSTDIR\uninst.exe"
+  Delete "$INSTDIR\src\COPYING.txt"
+  Delete "$INSTDIR\src\AUTHORS.txt"
+  Delete "$INSTDIR\src\clonezilla_logo_transparent.gif"
+  Delete "$INSTDIR\src\clonezilla_logo_transparent.ico"
+  Delete "$INSTDIR\src\CommonModule.bas"
+  Delete "$INSTDIR\src\FormatPage.frm"
+  Delete "$INSTDIR\src\FormatPage.frx"
+  Delete "$INSTDIR\src\BootPage.frm"
+  Delete "$INSTDIR\src\BootPage.frx"
+  Delete "$INSTDIR\src\InstallPage.frm"
+  Delete "$INSTDIR\src\InstallPage.frx"
+  Delete "$INSTDIR\src\FormatDialog.frm"
+  Delete "$INSTDIR\src\FormatDialog.frx"
+  Delete "$INSTDIR\src\FTPModule.bas"
+  Delete "$INSTDIR\src\InstallHPDialog.frm"
+  Delete "$INSTDIR\src\InstallHPDialog.frx"
+  Delete "$INSTDIR\src\Project.vbp"
+  Delete "$INSTDIR\src\Project.vbw"
+  Delete "$INSTDIR\src\ReadyDialog.frm"
+  Delete "$INSTDIR\src\ReadyDialog.frx"
+  Delete "$INSTDIR\src\RegkeyModule.bas"
+  Delete "$INSTDIR\src\Internationalization.bas"
+  Delete "$INSTDIR\src\MainModule.bas"
+  Delete "$INSTDIR\src\InstallFM20.frm"
+  Delete "$INSTDIR\src\InstallFM20.frx"
+  Delete "$INSTDIR\COPYING.txt"
+  Delete "$INSTDIR\AUTHORS.txt"
+  Delete "$INSTDIR\DRBLLiveHelper.exe"
+  Delete "$INSTDIR\lib\7za.exe"
+  Delete "$INSTDIR\lib\syslinux.exe"
+  Delete "$SMPROGRAMS\$ICONS_GROUP\Uninstall.lnk"
+  Delete "$SMPROGRAMS\$ICONS_GROUP\${PRODUCT_NAME}.url"
+  Delete "$DESKTOP\DRBLLiveHelper.lnk"
+  Delete "$SMPROGRAMS\$ICONS_GROUP\DRBLLiveHelper.lnk"
+  Delete "$INSTDIR\src\FormatDialog.frm"
+  Delete "$INSTDIR\src\FormatDialog.frx"
+  Delete "$INSTDIR\src\LanguagePage.frm"
+  Delete "$INSTDIR\src\LanguagePage.frx"
+  Delete "$INSTDIR\languages\Language.txt"
+  Delete "$INSTDIR\languages\Language-en.txt"
+  Delete "$INSTDIR\languages\Language-fr.txt"
+  Delete "$INSTDIR\languages\Language-ja.txt"
+  Delete "$INSTDIR\languages\Language-nl.txt"
+  Delete "$INSTDIR\languages\Language-zh_tw.txt"
+
+  RMDir "$SMPROGRAMS\$ICONS_GROUP"
+  RMDir "$INSTDIR\src"
+  RMDir "$INSTDIR\lib"
+  RMDir "$INSTDIR\languages"
+  RMDir "$INSTDIR"
+
+  DeleteRegKey ${PRODUCT_UNINST_ROOT_KEY} "${PRODUCT_UNINST_KEY}"
+  DeleteRegKey HKLM "${PRODUCT_DIR_REGKEY}"
+  SetAutoClose true
+SectionEnd
Index: /DRBLLiveHelper/languages/Language-en.txt
===================================================================
--- /DRBLLiveHelper/languages/Language-en.txt	(revision 33)
+++ /DRBLLiveHelper/languages/Language-en.txt	(revision 33)
@@ -0,0 +1,18 @@
+sel_usb_drv=Select a USB flash drive
+fmt_usb_drv=Format a USB flash drive
+pls_sel_usb_drv=Please select a USB flash drive.
+next=Next
+exit=Exit
+usb_drv=USB flash drive
+mk_usb_drv_boot=Make USB flash drive bootable
+sel_img=Select the image file
+inst_img=Install the image file
+browse=Browse
+pls_sel_arch_file=Please select the archive file of DRBL Live.
+usb_drv_boot=USB flash drive is bootable now.
+close=Close
+inst_ok=Installed Successfully
+confirm=Confirm
+no_hp_fmt_tool=No¡uHP USB Disk Storage Format Tool¡vinstalled is Detected, Please click the following link to install.
+pre=Previous
+sel_lang=Select a Language
Index: /DRBLLiveHelper/languages/Language-nl.txt
===================================================================
--- /DRBLLiveHelper/languages/Language-nl.txt	(revision 33)
+++ /DRBLLiveHelper/languages/Language-nl.txt	(revision 33)
@@ -0,0 +1,18 @@
+sel_usb_drv=Selecteer een USB Flash schijf.
+fmt_usb_drv=Formatteer een USB FLASH schijf.
+pls_sel_usb_drv=Selecteer a.u.b een USB FLASH schijf.
+next=Volgende
+exit=Einde
+usb_drv=USB Flash schijf
+mk_usb_drv_boot=Maak een USB FLASH opstartbaar
+sel_img=Selecteer een image
+inst_img=Installeer een image
+browse=Navigeer
+pls_sel_arch_file=Selecteer het archive bestand van DRBLLive.
+usb_drv_boot=De USB FLASH schijf is nu opstartbaar.
+close=Sluiten
+inst_ok=Succesvol geinstalleerd !.
+confirm=Bevestig
+no_hp_fmt_tool=Geen¡uHP USB Disk Storage Format Tool¡vgeinstalleerd, klik op de volgende link om te installeren...
+pre=Vorige
+sel_lang=Selecteer een taal
Index: /DRBLLiveHelper/languages/Language-zh_tw.txt
===================================================================
--- /DRBLLiveHelper/languages/Language-zh_tw.txt	(revision 33)
+++ /DRBLLiveHelper/languages/Language-zh_tw.txt	(revision 33)
@@ -0,0 +1,18 @@
+sel_usb_drv=¿ï¾Ü¤@­ÓÀH¨­ºÐºÏ°Ï
+fmt_usb_drv=®æ¦¡¤Æ¤@­ÓÀH¨­ºÐºÏ°Ï
+pls_sel_usb_drv=½Ð¿ï¾Ü¤@­ÓÀH¨­ºÐºÏ°Ï
+next=¤U¤@¨B
+exit=Â÷¶}
+usb_drv=ÀH¨­ºÐºÏ°Ï
+mk_usb_drv_boot=ÅýÀH¨­ºÐ¥i¶}¾÷
+sel_img=½Ð¿ï¾Ü¬M¹³ÀÉ
+inst_img=¦w¸Ë¬M¹³ÀÉ
+browse=ÂsÄý
+pls_sel_arch_file=½Ð¿ï¾Ü DRBL Live ¬M¹³ÀÉ
+usb_drv_boot=¥i¶}¾÷¤Æ¦¨¥\
+close=Ãö³¬
+inst_ok=¦w¸Ë¦¨¥\
+confirm=½T©w
+no_hp_fmt_tool=¨t²Î°»°¼¥X¥¼¦w¸Ë¡uHP Disk Storage Format Tool¡v,½ÐÂIÀ»¥H¤UÃìµ²ÂI¦w¸Ë.
+pre=¤W¤@¨B
+sel_lang=¿ï¾Ü»y¨¥
Index: /DRBLLiveHelper/languages/Language.txt
===================================================================
--- /DRBLLiveHelper/languages/Language.txt	(revision 33)
+++ /DRBLLiveHelper/languages/Language.txt	(revision 33)
@@ -0,0 +1,5 @@
+English=languages\Language-en.txt
+French=languages\Language-fr.txt
+Japanese=languages\Language-ja.txt
+Netherlands=languages\Language-nl.txt
+Traditional Chinese=languages\Language-zh_tw.txt
