複数のファイルからなる.cabファイルを作りたいのですが。私が出会ったチュートリアルやガイドは、いくつかのファイルにのみ役立ちます。
ウィキペディア によると:
CABファイル形式では、次の圧縮アルゴリズムを使用できます。
- [〜#〜] deflate [〜#〜]– Zipファイル形式の作者であるPhilKatzによって発明されました
- 量子圧縮–量子アーカイバの作者であるDavidStaffordからライセンス供与
- [〜#〜] lzx [〜#〜]– JonathanForbesとTomiPoutanenによって発明され、Forbesが入社したときにMicrosoftに渡されました
そのため、すべての.Zipコンプレッサーは、最近のすべてのWindowsバージョンでネイティブなファイルであっても、ファイルを開く必要があります。
ただし、記事に示されているように、.cabファイルを作成するアーカイバは、その形式が原因でほとんどありません。次の list によると、これらのプログラムは.cabファイルを書き込むことができます。
Windowsの組み込みコマンドmakecab
を使用できますが、最初にファイルリストを生成する必要があります。
dir C:\FolderName /s /b /a-d > c:\temp\files.txt
これにより、C:\ FolderNameディレクトリ内のすべてのファイルが一覧表示され、フルパス名のテキストファイルとして保存されます。次に、files.txtファイルを使用してcabファイルを作成します。
makecab /d CabinetName1=test.cab /D DiskDirectoryTemplate=C:\temp /f c:\temp\files.txt
上記のコマンドは、前に生成されたファイルリストを使用して、C:\ Tempフォルダーにtest.cabファイルを生成します。
追加の役立つリファレンス:Microsoftキャビネットリファレンス および makecab.exeの詳細
先週、プロジェクトのために急いでCABファイルを作成する必要がありました。私本当にがやりたかったのは、既存のCABファイル内の単一のファイルを置き換えて、CABのフォルダー構造を維持することでした。私はすぐに、これを適切に行うための簡単な7ZipまたはWinZipの方法がなく、成功の道は、必要な変更されたファイルを含む新しいCABファイルを生成することであることに気付きました。フォルダ内のすべてのファイルからCABファイルを作成するこのツールは、私にとっては見事に機能しました。作成するのはMakeCabユーティリティのGUIフロントエンドです。ここで説明します: https://yieldreturnpost.wordpress.com/2016/06/22/free-tool-to-create-cab-file-from -folder / GitHubソースはここにあります: https://github.com/sapientcoder/CabMaker
まず、Expandコマンドを使用して、既存のCABファイルからフォルダー構造にファイルを抽出しました。
expand -F:* \\MyServer\ServerMigration2020\ExportedConfigurationSourceFiles\MyOriginalCABFile.cab \\MyServer\CaptureSV\ServerMigration2020\Cabfiles\CabSourceFiles
このExpandコマンドは、CABファイル内のすべてのファイルを抽出し、フォルダー構造を保持したまま、フォルダーCabSourceFilesに配置しました。
これで、CabMakerGUIを実行してCABファイルを作成する準備が整いました。これは、ファイルとフォルダーのみの「プレーンな」CABファイルであり、インストーラーファイルのセットの一部などの追加のヘッダーを含むものではないことに注意してください。
CabMaker C#コードをダウンロードして、Visual Studio2019で実行しただけです。GUIが登場しました。ソースフォルダー([展開]コマンドの出力フォルダー)、ターゲットフォルダー(結果のCABファイルが配置される場所)、および目的のCABファイル名を入力し、[CABの作成]ボタンをクリックすると、実行されました。結果のCABファイルは美しく機能し、アプリに正常にインポートされ、正しく設定された構成になりました。
さて、なぜCABファイルを作成する必要があったのですか?ベンダーアプリを古いサーバーから新しいサーバーに移行し、アプリの「エクスポート」機能を使用して、新しいサーバーのアプリに「インポート」できる現在の状態の構成ファイルをキャプチャしていました。別の方法は、コンシューマーアプリの不格好なGUIを使用して手動でナビゲートし、変更されたファイル名とフォルダー名に数百の変更を加えることでした。すべての設定を保持しているCAB内のXMLファイルでファイルとフォルダーを変更する方がよいと判断しました。サーバーのカットオーバーの日にすべてがうまくいきました。時々私たちは幸運になります。 GitHubの寄稿者であるSapientCoderに大きな称賛を!