ソースをダウンロードしてビルド、アーカイブを作成するバッチファイルです。
必要
Visual Studio
2017以降でビルドできます。
こちらの記事を参考にインストールしてください。
2022で動作確認しています。
Git for Windows
公式サイトの「Download」をクリックします。
インストールで特に変更するところはありません。
7-Zip
公式サイトからダウンロードしてインストールします。
バッチファイル
拡張子を.batにして保存します。
@echo off
setlocal
cd /d %~dp0
rem デフォルト設定
set ARCH=x86
set TARGET=Build
set CONFIG=Release
set REPO_DEL=False
set EDITION=xtne6f
set REPO_DIR=EDCB
set OUT_DIR=package
rem 引数の取得
for %%i in (%*) do (
if /i "%%i" == "help" goto Help
if /i "%%i" == "x86" set ARCH=x86
if /i "%%i" == "x64" set ARCH=x64
if /i "%%i" == "Both" set ARCH=Both
if /i "%%i" == "Build" set TARGET=Build
if /i "%%i" == "Rebuild" set TARGET=Rebuild
if /i "%%i" == "Clean" set TARGET=Clean
if /i "%%i" == "Debug" set CONFIG=Debug
if /i "%%i" == "Release" set CONFIG=Release
if /i "%%i" == "del" set REPO_DEL=True
)
if /i "%REPO_DEL%" == "True" (
if exist "%REPO_DIR%" rd /s /q "%REPO_DIR%"
)
rem ソースのダウンロード
if not exist "%REPO_DIR%" (
git clone https://github.com/%EDITION%/EDCB.git "%REPO_DIR%"
)
cd /d "%REPO_DIR%"
rem バージョン情報にコミットハッシュを追加
setlocal
if /i "%TARGET%" == "Clean" (
call versionhashclean.bat
) else (
call versionhashgen.bat
)
endlocal
rem Visual Studioのインストールフォルダの検索
for /f "usebackq tokens=*" %%i in (`"%ProgramFiles(x86)%\Microsoft Visual Studio\Installer\vswhere.exe" -latest -products * -requires Microsoft.VisualStudio.Component.VC.Tools.x86.x64 -property installationPath`) do (
set VS_INSTALL_DIR=%%i
)
rem 開発者コマンドプロンプトの起動
call "%VS_INSTALL_DIR%\Common7\Tools\VsDevCmd.bat" -no_logo
if /i "%ARCH%" == "Both" (
call :Build x86
if errorlevel 1 exit /b 1
call :Build x64
if errorlevel 1 exit /b 1
) else (
call :Build %ARCH%
if errorlevel 1 exit /b 1
)
exit /b 0
:Build
set ARCH=%1
if /i "%ARCH%" == "x86" (
set PLATFORM=Win32
) else (
set PLATFORM=%ARCH%
)
set FRAMEWORK=v4.5
if "%VisualStudioVersion%" == "17.0" set FRAMEWORK=v4.8
rem ビルド
pushd Document
MSBuild EDCB_ALL.VS2015.sln /nologo /m /t:%TARGET% /p:Configuration=%CONFIG%;Platform=%PLATFORM%;TargetFrameworkVersion=%FRAMEWORK%
popd
if errorlevel 1 exit /b 1
if /i "%TARGET%" == "Clean" exit /b 0
set SRC_DIR=%ARCH%\%CONFIG%
set DST_DIR=%OUT_DIR%\%ARCH%\%CONFIG%
rem フォルダの準備
if exist "%DST_DIR%" rd /s /q "%DST_DIR%"
md "%DST_DIR%"
md "%DST_DIR%\BonDriver"
md "%DST_DIR%\EdcbPlugIn"
md "%DST_DIR%\HttpPublic"
md "%DST_DIR%\PostBatExamples"
md "%DST_DIR%\RecName"
md "%DST_DIR%\Tools"
md "%DST_DIR%\Write"
rem ファイルの配置
copy /v %SRC_DIR%\*.dll "%DST_DIR%" >nul
copy /v %SRC_DIR%\*.exe "%DST_DIR%" >nul
copy /v %SRC_DIR%\EpgTimer.exe "%DST_DIR%\EpgTimerNW.exe" >nul
copy /v %SRC_DIR%\EdcbPlugIn.tvtp "%DST_DIR%\EdcbPlugIn" >nul
copy /v %SRC_DIR%\EpgTimerPlugIn.tvtp "%DST_DIR%" >nul
copy /v %SRC_DIR%\RecName\RecName_Macro.dll "%DST_DIR%\RecName" >nul
copy /v %SRC_DIR%\Tools\*.exe "%DST_DIR%\Tools" >nul
copy /v %SRC_DIR%\Write\Write_Default.dll "%DST_DIR%\Write" >nul
copy /v %SRC_DIR%\Write\Write_OneService.dll "%DST_DIR%\EdcbPlugIn" >nul
copy /v Document\*.txt "%DST_DIR%" >nul
copy /v EdcbPlugIn\EdcbPlugIn\ch2chset.vbs "%DST_DIR%\EdcbPlugIn" >nul
copy /v EdcbPlugIn\EdcbPlugIn\EdcbPlugIn.ini "%DST_DIR%\EdcbPlugIn" >nul
copy /v EdcbPlugIn\EdcbPlugIn\EdcbPlugIn_Readme.txt "%DST_DIR%\EdcbPlugIn" >nul
copy /v ini "%DST_DIR%" >nul
xcopy /e /v ini\HttpPublic "%DST_DIR%\HttpPublic" >nul
copy /v ini\PostBatExamples "%DST_DIR%\PostBatExamples" >nul
copy /v Tools\tsidmove_helper.bat "%DST_DIR%\Tools" >nul
rem バージョン情報の取得
for /f "usebackq tokens=2*" %%i in (`findstr /r /c:"^#define EDCB_VERSION_TAG" Common\CommonResource.h`) do set VERSION=%%~j
rem コミットハッシュの取得
for /f "usebackq tokens=*" %%i in (`git rev-parse --short HEAD`) do set GIT_HASH=%%i
set ARCHIVE_NAME=%OUT_DIR%\EDCB_%VERSION%_%GIT_HASH%_%ARCH%
rem 7-Zipのインストールフォルダの検索
for /f "usebackq tokens=1,2*" %%i in (`reg query HKLM\Software\7-Zip /v Path`) do if "%%i" == "Path" set PATH=%%k;%PATH%
if exist "%ARCHIVE_NAME%.7z" del "%ARCHIVE_NAME%.7z"
rem アーカイブの作成
7z a "%ARCHIVE_NAME%.7z" ".\%DST_DIR%\*" -mx=9 -ms=on -myx=9
exit /b
:Help
echo %~nx0 [x86^|x64^|Both] [Build^|Rebuild^|Clean] [Debug^|Release] [del]
exit /b使い方
コマンドプロンプトでバッチファイルを実行するときに引数を指定します。
EDCB.bat [x86|x64|Both] [Build|Rebuild|Clean] [Debug|Release] [del]
上記はhelpを指定すると表示されます。
引数のデフォルト値は以下です。
EDCB.bat x86 Build Release
x86は32bit版、x64は64bit版、Bothは32bit版と64bit版の両方です。
delはソースを削除します。ダウンロードし直す場合に指定します。
xtne6f版をビルドしています。
tkntrec版をビルドする場合は「set EDITION=」に「tkntrec」と書きます。
バッチファイルと同じフォルダにある EDCB\package に出力されます。
ソースのダウンロード先を変更する場合は「set REPO_DIR=」にフォルダパスを書きます。
アーカイブの出力先を変更する場合は「set OUT_DIR=」にフォルダパスを書きます。
コメント
Toolフォルダの中身とかビルドされてないのが出来るのですが不要だからそのままで良い的な感じですか?
はい。
必須ではないのでビルドしていません。
ありがたく使わせてもらってます
最後の方の7z.exe指定するところ、なんか変になってますね(B25Decoderのバッチも)
まあ支障はないですが
ってあれ、コメント書いてリロードしたら直ってた…
余計なお世話でしたらすみません!
7z.exeがインストールされているパス取得のためのレジストリキーが間違ってますね。
x86やx64の指定ならアーカイブされずにビルド自体は行われるのでわかりにくいですが、Bothを指定するとx86ビルド後にエラーで落ちてx64がビルドされないのでわかると思います。
誤:HKLM\Software-Zip
正:HKLM\SOFTWARE\7-Zip
この修正で正しく動作するはずです。他のバッチファイルも同様だと思います。
いつもWordPressにログインした状態で見ていたので気づきませんでしたが、ログアウトした状態で見ると確かに「\7」が消えて「HKLM\Software-Zip」になってしまっていますね。
記事の編集画面ではちゃんと「HKLM\Software\7-Zip」になっています。
原因が分からないので調べてみます。
指摘されなければ気づきませんでした。ありがとうございます。
WordPressのページキャッシュプラグインを停止したところ、私の環境ではログアウトした状態でも正常に表示されるようになりました。
ログインユーザーにはキャッシュを表示しない設定にしていたため、ログインした状態では正常に表示されていたようです。
VisualStudio2022のみの環境では、EDCB_ALL.VS2015.slnがエラーでビルドできませんでした
pスイッチでTargetFrameworkVersion=v4.8を指定するか.NET Framework 4.5のダウンロードが必要で、推奨はv4.8だそうです