📂WinMergeComparerApp
┣ 📂Modules
┃ ┗ 📂WinMergeHandler
┃   ┗ 📜WinMergeHandler.psm1 # WinMergeの呼び出しと設定管理を行うモジュール
┣ 📜App.ps1 # アプリケーションのメインスクリプト
┗ 📜App-ショートカット # App.ps1を起動するショートカットファイル
# WinMergeHandler.psm1

Function Compare-PathsUsingWinMerge {
    <#
    .SYNOPSIS
    2つのパスをWinMergeで比較します。必要な設定をコマンドラインオプションとして適用します。
    .PARAMETER Path1
    比較する最初のパス。
    .PARAMETER Path2
    比較する2番目のパス。
    .PARAMETER Options
    WinMergeに渡す追加のコマンドラインオプション。
    #>
    param(
        [string]$Path1,
        [string]$Path2,
        [string]$Options = ""  # ここでデフォルトのオプションを設定できます
    )

    # WinMergeのパスを確認
    $winMergePath = if(Test-Path "C:\\Program Files (x86)\\WinMerge\\WinMergeU.exe") {
        "C:\\Program Files (x86)\\WinMerge\\WinMergeU.exe"
    } elseif(Test-Path "C:\\Program Files\\WinMerge\\WinMergeU.exe") {
        "C:\\Program Files\\WinMerge\\WinMergeU.exe"
    } else {
        throw "WinMergeがインストールされていません。"
    }

    # WinMergeでの比較コマンドを実行。オプションを含める
    $cmdArgs = $Path1, $Path2, $Options -join ' '
    & $winMergePath $cmdArgs
}
# App.ps1

# モジュールの読み込み
Import-Module "$PSScriptRoot\\Modules\\WinMergeHandler\\WinMergeHandler.psm1"

# 主処理
Function Main {
    # 比較するパス(例)
    $Path1 = "C:\\Path\\To\\First\\FileOrDirectory"
    $Path2 = "C:\\Path\\To\\Second\\FileOrDirectory"

    # パスの存在確認
    if(-not (Test-Path $Path1) -or -not (Test-Path $Path2)) {
        Write-Host "指定されたパスの一部または全部が存在しません。"
        return
    }

    # WinMergeでの比較処理。必要に応じてオプションを追加してください
    $options = "/u /wl /wr"  # 例: /u は自動終了、/wl と /wr は左右のファイルを読み取り専用で開く
    Compare-PathsUsingWinMerge -Path1 $Path1 -Path2 $Path2 -Options $options
}

# スクリプトの実行
Main