L2TP VPN用の.msiインストーラー作成

こんにちは、私は自分の.MSIインストーラーのパッケージを作成する方法についてのガイドを探しているのですが、GoogleやDDGでキーワードの組み合わせをいろいろ試してみました。

一部のクライアントには非常に特定のVPN接続のニーズがあり、それぞれのクライアントごとにガイドにすべての手順を書き留めています。

しかし、Windows 10/11の基本的なVPNは完全に設定されていて、シンプルな.MSIインストーラーを通じて接続できる状態になっているのを見てきました。

どうやって自分でそのインストーラーを作成すればいいのか見つけられず、これがあればVPNの設定や事前共有鍵のリファレンスなどにかかる時間を少なくとも1週間に1時間は節約できると思います。

この件についての良いガイドのリンクを知っている方はいますか?

Windowsに標準搭載のVPN?

PowerShellを使って展開するのはかなり簡単です。

フルトンネル

$ServerAddress = "アドレス"
$ConnectionName = "名前"
$PresharedKey = "キー"
Add-VpnConnection -Name "$ConnectionName" -ServerAddress "$ServerAddress" -TunnelType L2tp -L2tpPsk "$PresharedKey" -remembercredential -AuthenticationMethod Pap -Force

スプリットトンネル

$ServerAddress = "アドレス"
$ConnectionName = "名前"
$PresharedKey = "キー"
$Destination = "サブネット/24"
$Destination2 = "サブネット/24"
$Destination3 = "サブネット/24"
Add-VpnConnection -Name "$ConnectionName" -ServerAddress "$ServerAddress" -TunnelType L2tp -L2tpPsk "$PresharedKey" -remembercredential -AuthenticationMethod Pap -Force

Start-Sleep -m 100

Set-VpnConnection -Name $ConnectionName -SplitTunneling $true

Start-Sleep -m 100

Add-Vpnconnectionroute -Connectionname $ConnectionName -DestinationPrefix $Destination
Add-Vpnconnectionroute -Connectionname $ConnectionName -DestinationPrefix $Destination2
Add-Vpnconnectionroute -Connectionname $ConnectionName -DestinationPrefix $Destination3

EXEですがMSIではありませんが、パッケージ化できますか?

古いものですが、以前使ったことがあります。

PowerShellが動作するなら、ps2exeや他のPowerShellスクリプトをEXEファイルに変換する方法を試してみると良いでしょう。

ユーザーはダブルクリックだけで実行できるようになります。

もちろんテストは必要ですが、うまくいくかもしれません。

多くのMSIを必要とする場合、フリーのAdvanced Installerが役立ちましたが、VPNのMSI化はしたことがないので、それがうまくいくかはわかりません。

Visual Studio 2019のフリーエディションを使って、自分のMSIパッケージを作成できます。

これまでEXEベースのアプリのIntune展開に使ってきました。

https://www.advancedinstaller.com/create-msi-installer-with-visual-studio.html

そうだけど、クライアントに送れるファイルで、クリックだけでインストールできるものが欲しいです。

最小限の操作だけ。彼らはクライアントであり、コンピュータについて何も知らないのです。

私と同じように見えるスクリプトを作ったことがあります。

リダイアルコマンドを追加して、既存の接続を削除しています。

$name = 'CORP VPN'
rasdial $name /DISCONNECT;
Remove-VpnConnection -Name $name -AllUserConnection -Force
Add-VpnConnection -Name $name -TunnelType L2tp -ServerAddress 'vpn.mycompany.com' -L2tpPsk 'MyL2tpPassphrase' -DnsSuffix 'mydomain.com' -AuthenticationMethod PAP -EncryptionLevel Optional -AllUserConnection $true -Force
Add-VpnConnectionRoute -ConnectionName $name -DestinationPrefix "mysubnet" -AllUserConnection

これで動作します。