@Echo Off
Cls
Call :SetVariable
If Exist "%SystemRoot%\sysWOW64" (
    Goto x64
) Else (
    Goto x86
)

:x64
Set SystemType=x64
Set Version=The KMPlayer 2.9.3.1429 Final Release(20071216)
Title ◆系统检测◆检测到系统环境为%SystemType%。
Echo.&Echo.&Echo.&Echo.&Echo.&Echo.&Echo.&Echo.
Echo                    ※※※※※※※※※※※※※※※※※※※※※※
Echo                    ※                                        ※
Echo                    ※             检测到64位系统             ※
Echo                    ※   脚本将使用新版主程序替换原版主程序   ※
Echo                    ※                                        ※
Echo                    ※※※※※※※※※※※※※※※※※※※※※※
"%Tools%\Tools\timeout.exe" /T 2 /NoBreak>Nul
Goto CheckSetupFiles

:x86
Set SystemType=x86
Set Version=The KMPlayer 2.9.3.1428 Final Release(20071216)
Goto CheckSetupFiles

:CheckSetupFiles
Cls
If Exist "%SourceDir%" (
    Goto SetupModeCheck
) Else (
    Title ◆致命错误◆找不到安装目录"%SourceDir%"。
    Call :MainTitle
    Echo     找不到安装目录"%SourceDir%"，请确认该目录是否存在。
    Call :SecondTitle
    "%Tools%\Tools\timeout.exe" /T 2 /NoBreak>Nul
    Goto End
)

:SetupModeCheck
Cls
%Title% [%SystemType%] - 安装脚本
Set Choice=
Call :MainTitle
Echo     KMPlayer原名WaSaVi，是一款由韩国作者姜龙喜维护的Windows桌面免费播放器项目。
Echo     由于潘多拉TV收购其代码，原作者姜龙喜已经不再维护该播放器，本版本也将变为不定期更新。如有任何疑问与建议、意见可以直接进QQ群进行讨论。
Echo     本脚本版权没有，内含组件的版权属于各自的原作者，转载请注明来源，谢谢合作。
Echo.
Echo 注意事项：
Echo     一、本脚本动用的批处理代码比较多，请Vista以及更高版本系统的用户务必在脚本上使用右键菜单中的[以管理员身份运行]功能运行本脚本进行安装，否则将导致安装失败。
Echo     二、本脚本默认支持各种系统变量，但为了使用中不出现例如设置失效或语言丢失的问题，安装路径将固定为[%TargetDir%]。
Echo     三、本脚本在安装过程中很可能被杀软报为病毒，属于正常现象。
Call :SecondTitle
Echo                                可供使用的安装模式
Echo.
Echo         1、完整版                            2、完整版+扩展皮肤包
Echo         3、完整版+扩展皮肤包+扩展解码包      4、完全卸载
Echo         5、只安装扩展解码包                  6、只卸载扩展解码包
Call :SecondTitle
Echo.
Set /P Choice=                     请输入数字选择安装模式，其他键退出：
Echo.
If /I "%Choice%"=="1" Goto NormalMode
If /I "%Choice%"=="2" Goto SkinMode
If /I "%Choice%"=="3" Goto ExtraMode
If /I "%Choice%"=="4" Goto UnInstall
If /I "%Choice%"=="5" Goto CodecPackInstall
If /I "%Choice%"=="6" Goto CodecPackUnInstall
If /I "%Choice%"=="" Goto SetupModeCheck
Goto End

:NormalMode
Cls
%Title% [%SystemType%] - 完整版
Set NormalModeChoice=
Call :MainForm
Set /P NormalModeChoice=                     请输入数字选择安装模式，其他键退出：
Echo.
If /I "%NormalModeChoice%"=="1" Goto CheckDir
If /I "%NormalModeChoice%"=="2" Goto SetupModeCheck
If /I "%NormalModeChoice%"=="" Goto NormalMode
Goto End

:SkinMode
Cls
%Title% [%SystemType%] - 完整版+扩展皮肤包
Set SkinModeChoice=
Call :MainForm
Set /P SkinModeChoice=                     请输入数字选择安装模式，其他键退出：
Echo.
If /I "%SkinModeChoice%"=="1" Goto CheckDir
If /I "%SkinModeChoice%"=="2" Goto SetupModeCheck
If /I "%SkinModeChoice%"=="" Goto SkinMode
Goto End

:ExtraMode
Cls
%Title% [%SystemType%] - 完整版+扩展皮肤包+扩展解码包
Set ExtraModeChoice=
Call :MainForm
Set /P ExtraModeChoice=                     请输入数字选择安装模式，其他键退出：
Echo.
If /I "%ExtraModeChoice%"=="1" Goto CheckDir
If /I "%ExtraModeChoice%"=="2" Goto SetupModeCheck
If /I "%ExtraModeChoice%"=="" Goto ExtraMode
Goto End

:CheckDir
Cls
If Exist "%TargetDir%" (
    Goto DirExist
) Else (
    MD "%TargetDir%"
    Goto FileCopying
)

:DirExist
Title ◆目标存在◆指定安装目录已经存在，请选择操作...
Set CheckDirChoice=
Call :MainTitle
Echo.
Echo                           目标目录已经存在，请选择操作
Echo.
Call :SecondTitle
Echo                                可供使用的安装模式
Echo.
Echo                 1、覆盖安装                          2、退出脚本
Call :SecondTitle
Echo.
Set /P CheckDirChoice=                     请输入数字选择安装模式，其他键退出：
Echo.
If /I "%CheckDirChoice%"=="1" Goto FileCopying
If /I "%CheckDirChoice%"=="2" Goto End
If /I "%CheckDirChoice%"=="" Goto CheckDir
Goto End

:FileCopying
If /I "%Choice%"=="1" Call :FileCopying1
If /I "%Choice%"=="2" Call :FileCopying2
If /I "%Choice%"=="3" Call :FileCopying3
Goto Register

:Register
Echo 初始化注册表内容...
Echo.
Rundll32 SetupApi,InstallHinfSection Initialize 132 %TargetDir%\Setting.inf>Nul
Echo 向注册表写入内容...
Echo.
Rundll32 SetupApi,InstallHinfSection Optimum 132 %TargetDir%\Setting.inf>Nul
Echo 向注册表写入注册表关联...
Rundll32 SetupApi,InstallHinfSection Associated-Install 132 %TargetDir%\Setting.inf>Nul
Goto InstallFinish

:InstallFinish
Cls
%Title% [%SystemType%] - 安装完成...
Set InstallFinishChoice=
Call :MainTitle
Echo                        是否启用原版图标？默认将使用美化版。
Echo.
Call :SecondTitle
Echo                                可供使用的安装模式
Echo.
Echo                  1、使用默认值                     2、使用原版
Call :SecondTitle
Echo.
Set /P InstallFinishChoice=                     请输入数字选择安装模式，其他键退出：
Echo.
If /I "%InstallFinishChoice%"=="1" Goto End
If /I "%InstallFinishChoice%"=="2" Goto Recover
If /I "%InstallFinishChoice%"=="" Goto InstallFinish
Goto End

:Recover
If Exist "%SystemRoot%\sysWOW64" (
    Copy /Y "%Tools%\Tools\x64\KMPlayer.exe.bak" "%TargetDir%\KMPlayer.exe">Nul
    Goto End
) Else (
    Copy /Y "%Tools%\Tools\x86\KMPlayer.exe.bak" "%TargetDir%\KMPlayer.exe">Nul
    Goto End
)
Goto End

:UnInstall
Cls
%Title% [%SystemType%] - 卸载
Set UnInstallChoice=
Call :MainTitle
Echo.
Echo                                    请选择操作
Echo.
Call :SecondTitle
Echo                                可供使用的安装模式
Echo.
Echo                 1、卸载程序                          2、返回选择
Call :SecondTitle
Echo.
Set /P UnInstallChoice=                     请输入数字选择安装模式，其他键退出：
Echo.
If /I "%UnInstallChoice%"=="1" Goto UnInstallFileCheck
If /I "%UnInstallChoice%"=="2" Goto SetupModeCheck
If /I "%UnInstallChoice%"=="" Goto UnInstall
Goto End

:UnInstallFileCheck
Cls
If Exist "%TargetDir%" (
    Goto UnInstallOperation
) Else (
    Cls
    Title ◆致命错误◆找不到安装目录"%TargetDir%"。
    Call :MainTitle
    Echo     找不到安装目录"%TargetDir%"，可能这台机器没有进行过安装操作。
    Call :SecondTitle
    "%Tools%\Tools\timeout.exe" /T 2 /NoBreak>Nul
    Goto End
)

:UnInstallOperation
Call "%Tools%\Codecs\UnInstall.bat"
Call "%Tools%\Plugins\UnInstall.bat"
Rundll32 SetupApi,InstallHinfSection Associated-UnInstall 132 %TargetDir%\Setting.inf>Nul
Rundll32 SetupApi,InstallHinfSection Initialize 132 %TargetDir%\Setting.inf>Nul
RD /S /Q "%TargetDir%"
"%Tools%\Tools\timeout.exe" /T 5 /NoBreak>Nul
Goto End

:End
Exit

Rem =========================================================================================
Rem                                                                 预设变量行开始
Rem =========================================================================================

:SetVariable
Set Name=真夏播放器(ManatsuPlayer) Build 2012.1
Set Title=Title %Name%
Set TargetDir=%ProgramFiles%\ManatsuPlayer
Set SourceDir=%CD%\Other\Source
Set Tools=%CD%\Other
Goto :Eof

:MainTitle
Echo.
Echo                   %Name% [%SystemType%]
Echo.
Call :SecondTitle
Goto :Eof

:SecondTitle
Echo ===============================================================================
Goto :Eof

:MainForm
Call :MainTitle
Echo     《%Name%》是以%Version%为核心的定制型播放器，在最小的修改下满足最大的播放需求，虽然这个定制版的用户不是很多，但这些用户是绝对忠诚于KMPlayer与姜龙喜大神的……
Echo     不使用最新版本打包是因为潘多拉公司自从收购KMPlayer的源代码后就没干过一件好事，像强制安装广告条、撤消更新服务器和更新目录、在"我的文档"目录下生成文件这种"暴风行为"倒做得不错，无语中……
Echo     作为一个铁杆用户来说舍弃一个播放器是异常困难的，既然事已至此，干脆就捆绑个定制版放那算了，跟着就诞生了这个最终版。
Echo.
Echo     三个版本的区别：
Echo         完整版：使用原始安装文件中提取的文件进行安装，最大限度保持原味。
Echo         完整版+扩展皮肤包：原始安装文件加上精选皮肤的定制版，体积较大。
Echo         完整版+扩展皮肤包+扩展解码包：体积最大功能最全的版本，推荐安装。
Call :SecondTitle
Echo                                可供使用的安装模式
Echo.
Echo               1、开始安装                          2、返回选择
Call :SecondTitle
Echo.
Goto :Eof

:FileCopying1
Cls
%Title% [%SystemType%] - 正在安装...
Echo 复制安装文件...
Echo.
XCopy "%SourceDir%" "%TargetDir%" /E /Q /R /Y>Nul
Rem Echo 创建卸载程序...
Rem Echo.
Rem Copy /Y "%Tools%\Tools\UnInstall.exe" "%TargetDir%\UnInstall.exe">Nul
Echo 复制主程序到安装目录...
Echo.
If Exist "%SystemRoot%\sysWOW64" (
    Copy /Y "%Tools%\Tools\x64\KMPlayer.exe" "%TargetDir%\KMPlayer.exe">Nul
) Else (
    Copy /Y "%Tools%\Tools\x86\KMPlayer.exe" "%TargetDir%\KMPlayer.exe">Nul
)
Echo 补充其他文件...
Echo.
XCopy "%Tools%\Patch" "%TargetDir%" /E /Q /R /Y>Nul
XCopy "%Tools%\Codecs\RealPlayer" "%TargetDir%" /E /Q /R /Y>Nul
Call "%Tools%\Plugins\Install.bat"
Goto :Eof

:FileCopying2
Call :FileCopying1
Echo 补充皮肤包...
Echo.
XCopy "%Tools%\Skins" "%TargetDir%\Skins" /E /Q /R /Y>Nul
Goto :Eof

:FileCopying3
Call :FileCopying2
Echo 安装解码包...
Echo.
Rem 下面这行的作用请看目标目录下的Install.bat文件
Call "%Tools%\Codecs\Install.bat"
Goto :Eof

:CodecPackInstall
Cls
Echo 安装解码包...
Echo.
Rem 下面这行的作用请看目标目录下的Install.bat文件
Call "%Tools%\Codecs\Install.bat"
"%Tools%\Tools\timeout.exe" /T 2 /NoBreak>Nul
Exit
Goto :Eof

:CodecPackUnInstall
Cls
Echo 卸载解码包...
Echo.
Rem 下面这行的作用请看目标目录下的UnInstall.bat文件
Call "%Tools%\Codecs\UnInstall.bat"
"%Tools%\Tools\timeout.exe" /T 5 /NoBreak>Nul
Exit
Goto :Eof

Rem =========================================================================================
Rem                                                                 预设变量行终止
Rem =========================================================================================
