DesktopIniManager v4.5.7
=======================

■ ソフトウェア名・種別
DesktopIniManager（DIM）
フリーソフト / Windows用フォルダー解析・検索・比較ツール

■ 概要
フォルダーとVisual Studioソリューションの解析、ファイル検索、
Scoped Grep、フォルダー比較、読み取り専用DIFF VIEW、desktop.iniによる
フォルダーアイコン管理を一つにまとめた開発支援ツールです。

走査・検索・比較・閲覧では対象ファイルの内容を編集しません。
編集・マージが必要な場合は、設定した外部ツールへ渡します。
アイコン設定、同期、ビルド／Clean、ZIP保存など、明示的に実行する
ファイル操作は書き込みを伴います。

■ 動作環境
・Windows 10 / Windows 11（64ビット）
・.NET 10 Desktop Runtime（x64）が別途必要
・SolutionビルドにはVisual Studio Build Tools / MSBuild、または.NET SDK
・外部エディター／DIFF・マージツールは任意で設定

■ インストール
Vector配布版のDIM-v4.5.7-win-x64.zipを新しいフォルダーへ展開し、
DesktopIniManager.exeを起動してください。
DLL、JSON、Assets、Languagesを含め、同梱ファイルを一緒に配置します。
ExcelDataReaderとPdfPigのDLLはDocument Grepで使用します。
同梱アイコンはアプリ配置先のAssetsから読み込みます。
更新時は旧版へ上書きせず、新しいフォルダーへ展開してください。

公式サイト：
http://dim.zebrasoft.co.jp/
GitHubダウンロード：
https://github.com/K-Tamashiro/DesktopIniManager/releases
GitHubではv4.5.7のAssetsからDesktopIniManager-v4.5.7-win-x64.zipを選択してください。
Source codeのZIPは実行用の配布物ではありません。

■ v4.5.7 更新内容
メイン画面のファイル一覧・アイコン表示の右クリックに「Explorerメニュー」を追加しました。クリックするとDIMのメニューを閉じ、Windowsの従来形式のシェルメニューを表示します。「プログラムから開く」「ショートカットの作成」など、対象ファイルに応じた標準操作や対応する外部アプリの項目を利用できます。

■ 前版 v4.5.6 の更新内容
・動画／音声DIFFにSource／Target個別のディレイ調整を追加（0.1秒単位、負値対応）
・動画DIFFに左右独立の音量／ミュート、6段階の再生速度切替を追加
・動画再生中のシークバードラッグを安定化。操作中は一時停止し、確定位置から再開
・短い動画は再生時間の範囲内にシーク位置を制限し、長い側は再生を継続
・音声トラックのない動画では音量操作を無効化し、ボタンを薄く表示
・音声DIFFはSource／Targetの波形カーソルをドラッグしてディレイ調整可能
・ディレイのドラッグ操作と数値欄／スピナーを連動

■ v4系の主な機能・改善
・DIM1～DIM5の独立したプロセス／設定／履歴
・Dark、Light、DIM1～DIM5テーマの選択と復元
・Code GrepとDocument Grepを分離し、Excel／PDF内部検索に対応
・ルート行固定、フォルダー名ヒットの強調／件数表示
・ファイルリストの列幅、フォルダー／ファイル領域の幅を保存
・比較中のリスト更新とフォルダー構築の進捗表示
・更新日時／サイズ／BOM／XXH128を個別に指定できるファイル比較
・DIFF VIEWの行内差分・空白・改行記号の表示と読み込み進捗バー
・一部の操作アイコンのデザインを調整
・DIFF VIEWの画像／GIF／MP4動画／WAV・MP3音声比較
・音声のPCMサンプル差分を計算し、差異区間を赤く強調表示（切替可能）
・音声のA–B区間リピートと6段階の再生速度切り替え
・DIFF VIEWのSource黄色枠／Target青枠
・差分のみ／全行表示の切替、Ctrl+0、終了時の表示状態保存
・同梱アイコンパスをアプリの配置先から復元

■ メイン画面
Targetに検索・解析対象を指定し、物理フォルダーとSolution構造を表示します。
物理フォルダーでは、選択フォルダー直下のファイルを先頭に白文字で、
下位フォルダーのファイルを灰色で表示します。
Solution表示はVisual StudioのSolution Explorerに近い構造です。
.gitや.vsなどの管理フォルダーは表示対象から除外します。

ファイル名検索ではフォルダー名も対象です。
フォルダーをチェックすると、その配下を対象とするScoped File Searchや
Scoped Grepを実行できます。ヒット移動、ファイル選択に連動した
所属フォルダー選択、一覧／2列／3列アイコン表示に対応します。

ツリーは全チェック／解除、反転、展開／折りたたみ、チェック済みの
表示切替、名前フィルター、表示サイズ変更に対応します。
ルートが1つのツリーではルート行を固定表示します。

右クリックからTarget設定、Explorer表示、tree／tree /f／ファイルリストの
エディター出力、Scoped Grepへの引き渡しができます。
Solutionの右クリックからVisual Studio／.NET SDKによるビルドを実行できます。

フォルダーのドラッグアウトは対象フォルダーと直下のファイルを扱います。
ファイルリストからは複数ファイルをドラッグアウトできます。
ファイルリストで複数の検索結果がある場合、右クリックしたファイルと別のファイルをDIFF VIEWで比較できます。
検索結果から複数選択した場合も同様にDIFF VIEWで比較可能です。
ファイル選択は、フォルダーを跨がっていても可能です。

ファイルを右クリックし、「Explorerメニュー」をクリックして操作を選びます。
マウスを合わせるだけでは開きません。同じフォルダー内の複数選択に対応しますが、異なるフォルダーのファイルが混在する場合や対象がない場合は無効です。表示内容は関連付けやインストール済みアプリによって異なり、Explorerとの完全一致は保証しません。選択した操作に応じて、ショートカット作成や名前変更、削除などが実行されます。

Batch File Launcherの引数には次の置換文字を指定できます。
%d%：ディレクトリのフルパス
%f%：選択ファイルのフルパス
%n%：ファイル名

■ desktop.ini／アイコン管理
ICO／ICL／DLL／EXEからアイコンを選択し、チェックしたフォルダーへ設定します。
既存のdesktop.ini設定のリセット、.gitignoreへの追加にも対応します。
空／中身あり、ネットワーク・クラウドなどの状態に応じた表示を行います。

■ Developer Differencer
Source（黄色）とTarget（青色）のフォルダー構造を比較します。
パス選択時にインデックスを構築し、ラベルボタンで再走査できます。
Source選択時、現在のTargetに同名の末尾フォルダーがあれば選択します。
フォルダーの新規作成やTargetからSourceへの逆方向連動は行いません。

比較条件は、更新日時・ファイルサイズ・ATTR（BOM）・XXH128から
個別にオン／オフを設定できます。すべてオフの場合は、ファイルの有無のみを比較します。
ATTRはBOMの有無を確認します。文字コードの種類や改行コードは比較しません。
XXH128はファイル内容から128ビットのハッシュ値を計算し、内容の一致を判定します。
内容のみを比較する場合は、日時・サイズ・ATTRをオフにしてXXH128を使用します。
日時・サイズ・ATTRは、オンの項目をそれぞれ独立して判定します。
日時やサイズに差異があっても、ATTRがオンならBOMも確認します。
片側のみのファイル、または先行する有効な項目で差異が確定した場合、
XXH128の計算は省略します。XXH128だけオンの場合は、
両側に存在するファイルをハッシュ比較します。

Source／Targetの選択ルート以下にある.gitignoreの除外指定を反映します。
ディレクトリ指定、*、?、文字クラス、**、ルート指定、エスケープ、!による否定、階層ごとの上書きに対応します。
親ディレクトリが除外されたまま、その子だけを否定指定で再追加することはできません。
どちらか一方で除外されたパスは両側の比較・同期から除外します。
選択ルートより上位の.gitignoreやGitのグローバル除外設定は使用しません。変更後は再走査または再比較してください。
フィルターボタン右のignoreボタンで、Source／Targetの除外指定を統合した一覧を開きます。除外指定がない比較では非活性です。末尾が/のフォルダー指定を上、そのほかの指定を下に、それぞれ昇順で表示します。
チェックありは除外、チェックなしはその指定を無効にして比較対象へ含めます（ほかの有効な除外指定や否定指定は引き続き適用します）。
適用で両側を再走査して現在の比較タブを更新します。中央のボタンはチェック反転、キャンセルは変更破棄です。
設定は比較履歴ごとに保持し、同期時も使用します。.gitignoreファイル自体は変更しません。

同一、差異あり、片側のみ、obj、bin、チェック済みをフィルター表示します。
同一ファイルは基本状態では非表示です。
Sameチェック切替により同一ファイルも同期／ZIPの対象へ含められます。

結果は日時付きタブで最大20件保持し、新しいタブを左に表示します。
画面を開くと履歴タブ一覧を非同期で読み込みます。表示時の比較や前回結果の展開は行いません。
履歴タブを選ぶと保存済み結果を表示します。終了時は非同期保存の完了を待って閉じます。
上限時は不要タブを削除してから新規比較してください。
全体更新、選択フォルダーの更新、Solution Cleanに対応します。

Source／Targetのチェックしたファイルを相対構造を維持してZIP保存できます。
ファイルをチェックするとZIP化ボタンが利用可能になります。
ZIPアイコンをドラッグすると、ZIPを作らずに選択構成を構造ごと取り出せます。
双方向の同期は、確認画面で方向と実行内容を確認してから実行します。

■ DIFF VIEW
比較結果の対応ファイルをダブルクリックして開きます。
Sourceは黄色枠、Targetは青枠です。
テキスト差分は行番号、シンタックスハイライト、中央の差分マップで確認できます。
対応画像は画像ビューで表示し、未対応バイナリは対象外です。

「≠」：全行表示から差分のみ表示へ切り替え
「※」：差分のみ表示から全行表示へ戻す
差分のみでは変更セクション全体を表示し、上下の同一行は含めません。
省略した箇所は「52 filtered lines」などの区切りで表示します。
区切り行をクリックすると展開し、展開した領域をクリックすると折りたためます。
Ctrl+0でも切り替えられ、閉じる時の最終状態をスロットごとに保存します。
［Aa］行内の差分を赤文字で強調表示します。
［Space］タブ・半角スペース・全角スペースを記号で可視化します。
［改行］行末に改行コードの記号を表示します。
テキストファイルの読み込み中はプログレスバーで進捗を表示します。

前後の差分／ファイルへの移動、Source／Targetの外部エディター表示、
EXTによる外部DIFF・マージツールの起動に対応します。

GitのdifftoolからDIFF VIEWを起動できます。以下は.gitconfigの設定例です。
---- .gitconfig ---------------
[diff]
	tool = dim
[difftool "dim"]
	cmd = DesktopIniManager.exe -diff "$REMOTE" "$LOCAL"
[difftool]
	prompt = false
-------------------------------
DIFF VIEW自身は読み取り専用で、編集・マージは行いません。

外部起動時は片側のファイルが存在しなくても、存在する側を表示します。両側とも存在しない指定やフォルダー指定はエラーです。
DesktopIniManager.exe -diff のみで空のDIFF VIEWを開きます。Source／Targetにファイルをドロップすると比較します。
1ファイルはドロップした側へ、2ファイル同時の場合は順にSource／Targetへ取り込みます。
最初の入力でテキスト／画像モードを決定し、異なる種類や読み込み済みの同一ファイルは受け付けません。
更新ボタン左のクリア（140番）で両側を消去してモードをリセットします。通常の比較から開いたDIFF VIEWでもクリア・ドロップが使えます。
手動で取り込んだペアは元のフォルダー比較結果から独立して扱います。

■ 画像DIFF VIEW
比較対象が画像の場合は自動的に画像DIFFモードに切り替わります。
左右にSource画像とTarget画像を並べ、ZOOMスライダーとマウスホイールで拡大・縮小できます。
BMP／JPG（JPEG）／PNG／GIF／TIFF（TIF）を含む対応画像は、最近傍補間で拡大縮小します。平滑化やぼかしは行いません。
倍率は5～1600％で、最大1600％のときだけピクセルの格子を表示します。
また、ポインタ位置のARGB値と相対座標をリアルタイムに表示します。

Source／Targetそれぞれで元画像とXOR重ね合わせを切り替えられます。
マップには両画像を重ね、異なるピクセルを強調表示します。
アニメーションGIFではズームバーの下にフレーム選択スライダーを表示します。
スライダーを動かして離すと、選んだフレームを静止状態で比較します。自動再生は行いません。
左右の多い方のフレーム数を範囲とし、短い側の存在しないフレームはmissing表示になります。
フレーム数と本来の表示時間（ms）を表示し、透過・差分フレーム・背景／直前状態への復元を反映して合成します。
MP4動画は左右に表示し、共通の再生・シーク操作で比較します。

■ 動画DIFF VIEW（v4.5.6）
Source／Targetを左右に表示し、共通の再生・シーク・ズーム操作で比較します。
各動画のDelay欄で再生タイミングを0.1秒単位で調整できます。
正の値は再生を遅らせ、負の値は先に進めます。
左右個別の音量調整／ミュート、0.5～2.0倍の6段階再生速度に対応します。
再生中に共通シークバーをドラッグすると一時停止し、離すと選択位置から再開します。
短い動画は再生時間の範囲内に位置を制限し、長い側は再生を続けます。
音声トラックがない動画の音量操作は非活性になります。

■ 音声DIFF VIEW
Source／Targetの波形上にある再生カーソルを左右へドラッグすると、
その側のディレイを直接調整できます。Delay数値欄とスピナーは連動します。
正の値は再生を遅らせ、負の値は先に進めます（0.1秒単位）。
音源リソース（音声ガイダンスなど）の変更箇所を確認するための機能です。
波形を単に並べて表示するだけでなく、デコードしたPCMサンプルを
共通の時間軸上で比較し、差異が検出された区間を赤色で強調します。
サンプルレートが異なる場合は高い方のレートへリサンプリングして比較し、
チャンネルの欠落や長さの違いも差分として扱います。
音声認識や高度な音声解析ではなく、その手前で音源の差異を可視化します。

A–B区間のリピート再生、上部マップのガイド枠ドラッグに対応します。
再生速度は0.5／0.75／1.0／1.5／1.75／2.0倍の6段階で切り替えます。
初期値は1.0倍、選択中のボタンを明るく表示し、未選択を薄く表示します。
WAV／MP3の波形をSource／Targetの上下に表示します。
モノラル／ステレオに対応し、再生・シーク操作と個別の音量調整・ミュートができます。
フィットボタン右の音声比較アイコン（143番）で差分表示を切り替えます。
比較ONでは初回のみバックグラウンドで差分解析し、解析中は待機表示を重ねます。
計算結果は保持され、2回目以降のON／OFFでは再計算しません。
差異のある波形区間を赤く強調し、OFFでは通常色に戻ります。
1時間を超える音声も読み込み可能で、ズームは表示左端を基準に右方向へ拡大します。
Sourceは黄色、Targetは青色を基本に、再生前は暗く、再生済みは明るく表示します。
波形クリックでシーク位置を指定し、ドラッグでは表示範囲だけを移動します。
マップを拡大して表示領域に収まらなくなるとガイド枠が表示されます。ガイド枠をドラッグすると、マップ上でも画像を移動できます。

■ Scoped Grep
複数の検索フォルダーを登録し、チェックで対象を選択します。
フォルダーのドロップや、メイン画面のチェック状態の取り込みに対応します。
正規表現、大文字小文字の区別、単語単位検索が利用できます。
Language Profileで対象拡張子を管理・編集します。

Code GrepとDocument Grepは分離しています。
DocumentはExcel（xls／xlsx／xlsm）とPDF内部を検索します。
通常のテキストを検索する場合はPlainを使用してください。
Excelは [シート名][セル番地] 一致内容、PDFはページ番号を表示します。
画像だけのスキャンPDFに対するOCRは行いません。

結果はファイル単位でグループ化し、キーワードを赤字表示します。
追加Grepは同一ファイルのグループへヒットを追記します。
フィルター、伸縮、横スクロール、エディター出力、ファイル保存、
グループヘッダーのドラッグアウト、最大20件の結果タブに対応します。
外部エディターにはファイルパス、行番号、列番号を渡せます。

■ スロット・テーマ・言語
DIM1～DIM5はそれぞれ独立したプロセスです。
In Use：現在使用中 / Free：新規起動可能 / Open：別プロセスを前面表示
設定・履歴は %LOCALAPPDATA%\DesktopIniManager\dim-N に保存します。
Dark、Light、DIM1～DIM5のテーマを選択・復元できます。
UIは英語、日本語、中国語（簡体字）、韓国語に対応します。
履歴オールリセットも利用できます。

■ キーボード操作・起動オプション・バッチランチャー
操作／オプション／置換文字 | 動作
------------------------- | ----
Ctrl+1 | メイン画面
Ctrl+2 | Developer Differencer
Ctrl+3 | Scoped Grep
Ctrl+4 | 単体DIFF VIEWを起動（起動済みなら前面へ切り替え）
Ctrl+Space | 上記3画面を順番に切り替え。DIFF VIEWが開いていれば、すべてのDIFF VIEWも切り替え対象に参加
矢印キー | DIFF VIEWを上下左右スクロール
Page Up／Page Down | テキストDIFF VIEWのページスクロール
Shift+ホイール／サムホイール | 横スクロール
Ctrl+上／下 | 前／次の差分セクション
Ctrl+左／右 | 前／次の比較ファイル
Ctrl+0 | 全行／差分のみ表示を切り替え
-diff | ファイル指定なしで空のDIFF VIEWを単体起動。ドラッグ＆ドロップ対応。1ファイルはドロップした側、2ファイルは順にSource／Targetへ取り込み
-diff Source Target | 指定した2ファイルでDIFF VIEWを単体起動。空白を含むパスは二重引用符で囲む
-d1 / -d2 / -d3 / -d4 / -d5 | DIM1／DIM2／DIM3／DIM4／DIM5を指定して起動。使用中のスロットを指定した場合は通知して終了。省略時は空きスロットを自動選択
%f% | バッチランチャー：選択ファイルのフルパス
%d% | バッチランチャー：ディレクトリのフルパス
%n% | バッチランチャー：ファイル名

■ アンインストール
すべてのDIMを終了して、展開先フォルダーを削除してください。
設定も削除する場合は %LOCALAPPDATA%\DesktopIniManager を削除します。
設定済みのフォルダーアイコンを残したくない場合は、先にDIMでリセットします。
アプリ削除だけでは、対象フォルダーのdesktop.iniは削除されません。

■ 注意事項・免責
同期は受信側のファイルやフォルダーを削除する場合があります。
方向と対象を確認し、重要なデータは事前にバックアップしてください。
ネットワーク／クラウドの処理時間は通信状態やファイルの取得状況に依存します。

本ソフトウェアの著作権は作者に帰属します。
本ソフトウェアの使用によって発生した損害、データの消失、
その他の問題について、作者は責任を負いません。

■ 作者・連絡先
Tamayan / ZEBRASOFT
E-mail: tamayan@zebrasoft.co.jp
Website: http://dim.zebrasoft.co.jp/
GitHub: https://github.com/K-Tamashiro/DesktopIniManager

Copyright (C) ZEBRASOFT Tamayan
