7-zip32.dll Ver9.20.00.01
本家が久しぶりに正式版を出しましたのでその対応版です。
メジャーバージョンアップした割にはさほど内部での変更は無かったので対応も比較的楽に済みました。
本家の修正点以外でも幾つか機能の追加およびエンバグを修正してます。
まず、Unlha32.dllのUnlhaSetPriority()を参考にSevenSetPriority()でAPIを追加。
これでスレッドの優先度を指定できるようにしました。
しかしUnlha32.dllのそれとは違いスレッドの優先度を下げてもCPUはフル回転します。
ついでにSevenZipSetBackGroundMode()も実装しようかとも思いましたがこちらは結局手つかずのままにしてます。ここで言うバックグラウンドモードとは随分意味が違うような気がしましたので。
それからヘッダが暗号化された書庫の為にSevenZipSetDefaultPassword()関係を追加。
こちらはYz1.dllを参考にほぼ同等の機能を持ちます。但し7zの仕様の関係でSetDefaultPassword()は本来OpenArchive()系のAPIになりますが書庫に関連付け無くても使えるようになってます。
あとYz1.dllの場合パスワードを解除する際は""(空の文字列)を指定して解除する様ですが7zの場合空の文字列がパスワードにもなるのでここはNULLを指定する事で解除するように仕様変更。それに伴いNULLを指定してもSevenZipPasswordDialog()は呼び出しません。
コマンド説明書に書き忘れていましたが、これでグローバルなパスワードを設定してもSevenZip()での
コマンドには影響ありません。明示的に-pスイッチで指定しないと圧縮する際に暗号化しませんし解凍時パスワードを問い合わせます。
エンドユーザが使う分では経過ダイアログでの機能を本家の機能に合わせ追加してます。
それから内蔵SFXがPPMd解凍出来なくなってたのとパスワードミスった時にゴミが残るようになってたのも修正。
本家の更新分については沢山ありますが基本的には履歴を参考に。
注意として-sccスイッチは本家ではデフォルトはDOSですがWINに変更しています。
それから本家の更新履歴には載っていませんでしたがサロゲートペアユニコードに対応しているのと7z書庫でDeltaフィルタが追加されてます。
Deltaフィルタはwavファイルとかマルチメディアファイルを圧縮する際に威力発揮しそうですね。
あと本家の更新点で"The support for archives in installers was improved"と言うのが有ったのですがイマイチこれの意味が分からず。sfxがLZMA2に対応した事を意味してるんじゃないかと思うのですが・・・。仕方が無いのでこちらの履歴には直訳で書いてます。
開発中に7-zipの動作確認をしたところ、ソリッド書庫一部のファイルの更新を行うと他の全てのファイルの圧縮方式が変更されてしますがどうもバグっぽい。恐らく表示上の問題なだけだしもしかしたらテストの仕方が悪かったのかもしれないのでこれに関してはそのまま放置してます。
では、以下今回の更新点の詳細です。
メジャーバージョンアップした割にはさほど内部での変更は無かったので対応も比較的楽に済みました。
本家の修正点以外でも幾つか機能の追加およびエンバグを修正してます。
まず、Unlha32.dllのUnlhaSetPriority()を参考にSevenSetPriority()でAPIを追加。
これでスレッドの優先度を指定できるようにしました。
しかしUnlha32.dllのそれとは違いスレッドの優先度を下げてもCPUはフル回転します。
ついでにSevenZipSetBackGroundMode()も実装しようかとも思いましたがこちらは結局手つかずのままにしてます。ここで言うバックグラウンドモードとは随分意味が違うような気がしましたので。
それからヘッダが暗号化された書庫の為にSevenZipSetDefaultPassword()関係を追加。
こちらはYz1.dllを参考にほぼ同等の機能を持ちます。但し7zの仕様の関係でSetDefaultPassword()は本来OpenArchive()系のAPIになりますが書庫に関連付け無くても使えるようになってます。
あとYz1.dllの場合パスワードを解除する際は""(空の文字列)を指定して解除する様ですが7zの場合空の文字列がパスワードにもなるのでここはNULLを指定する事で解除するように仕様変更。それに伴いNULLを指定してもSevenZipPasswordDialog()は呼び出しません。
コマンド説明書に書き忘れていましたが、これでグローバルなパスワードを設定してもSevenZip()での
コマンドには影響ありません。明示的に-pスイッチで指定しないと圧縮する際に暗号化しませんし解凍時パスワードを問い合わせます。
エンドユーザが使う分では経過ダイアログでの機能を本家の機能に合わせ追加してます。
それから内蔵SFXがPPMd解凍出来なくなってたのとパスワードミスった時にゴミが残るようになってたのも修正。
本家の更新分については沢山ありますが基本的には履歴を参考に。
注意として-sccスイッチは本家ではデフォルトはDOSですがWINに変更しています。
それから本家の更新履歴には載っていませんでしたがサロゲートペアユニコードに対応しているのと7z書庫でDeltaフィルタが追加されてます。
Deltaフィルタはwavファイルとかマルチメディアファイルを圧縮する際に威力発揮しそうですね。
あと本家の更新点で"The support for archives in installers was improved"と言うのが有ったのですがイマイチこれの意味が分からず。sfxがLZMA2に対応した事を意味してるんじゃないかと思うのですが・・・。仕方が無いのでこちらの履歴には直訳で書いてます。
開発中に7-zipの動作確認をしたところ、ソリッド書庫一部のファイルの更新を行うと他の全てのファイルの圧縮方式が変更されてしますがどうもバグっぽい。恐らく表示上の問題なだけだしもしかしたらテストの仕方が悪かったのかもしれないのでこれに関してはそのまま放置してます。
では、以下今回の更新点の詳細です。
・APIの追加。(SevenSetPriority)
・APIの追加。(SevenZipSet/GetDefaultPassword, SevenZipPasswordDialog)
・SevenZipOpenArchive で M_ERROR_MESSAGE_ON フラグのサポート。
・処理状況ダイアログの詳細情報に経過時間と処理速度の項目追加。
・暗号化書庫解凍の際パスワードが間違ってた場合ゴミが残らないよう再修正。
解凍中止時に残るゴミは間違って別のファイルを消しかねないので残します。
・内蔵 SFX で PPMd 方式が未対応になってたのを修正。
・7-Zip 9.20 にてリビルド。
- 7z 書庫で LZMA2 圧縮方式をサポート。
- 7z ソリッド書庫の更新をサポート。
- zip 書庫で PPMd 圧縮方式をサポート。
- インストーラにて書庫のサポートを改善。
- zip 書庫に NTFS ファイルタイムスタンプを格納します。
- PPMd コーデックの速度最適化。
- Intel 32nm CPU にて AES コードの速度最適化。
- Intel Atom CPU にて CRC 計算コードの速度最適化。
- -scc スイッチで入出力の文字コードを指定可能。(デフォルトは WIN )
- -scrc スイッチで解凍、テスト時に合計 CRC-32 を計算します。
- ZIP 書庫を作成する際、ディスクの断片化が起きる問題を修正。
- 幾つかのバグを修正。
- サロゲートペアユニコード対応。
- 7z 書庫で Delta フィルタをサポート。
・APIの追加。(SevenZipSet/GetDefaultPassword, SevenZipPasswordDialog)
・SevenZipOpenArchive で M_ERROR_MESSAGE_ON フラグのサポート。
・処理状況ダイアログの詳細情報に経過時間と処理速度の項目追加。
・暗号化書庫解凍の際パスワードが間違ってた場合ゴミが残らないよう再修正。
解凍中止時に残るゴミは間違って別のファイルを消しかねないので残します。
・内蔵 SFX で PPMd 方式が未対応になってたのを修正。
・7-Zip 9.20 にてリビルド。
- 7z 書庫で LZMA2 圧縮方式をサポート。
- 7z ソリッド書庫の更新をサポート。
- zip 書庫で PPMd 圧縮方式をサポート。
- インストーラにて書庫のサポートを改善。
- zip 書庫に NTFS ファイルタイムスタンプを格納します。
- PPMd コーデックの速度最適化。
- Intel 32nm CPU にて AES コードの速度最適化。
- Intel Atom CPU にて CRC 計算コードの速度最適化。
- -scc スイッチで入出力の文字コードを指定可能。(デフォルトは WIN )
- -scrc スイッチで解凍、テスト時に合計 CRC-32 を計算します。
- ZIP 書庫を作成する際、ディスクの断片化が起きる問題を修正。
- 幾つかのバグを修正。
- サロゲートペアユニコード対応。
- 7z 書庫で Delta フィルタをサポート。