Delphi XE Pro - TurboPower Abbrevia を使ってみるテスト
Delphi XE Pro - 今年の1月から作成していたソフト、XPI_Maker が完成した。

XPI_Maker に致命的なバグがあったので ZIP 形式の圧縮ファイルにする時のコンポーネントを
TurboPower Abbrevia 5.0 にしてみようと四苦八苦して心が折れたヽ(´ヮ`)/
コンポーネントのインストール方法をイマイチ理解していないの為かうまくインストールできないので強引にソースコードを追加したし(苦笑)

何も指定せずにフォルダの圧縮をするようにフォルダを投げると
出力される圧縮ファイルは絶対パスで圧縮されたファイルが作られる(´;ω;`)

英語サイトをググたりソースコードを追いかけて、恐らく「AbArcTyp.pas」の191~192行目にある
TAbStoreOption =
  (soStripDrive, soStripPath, soRemoveDots, soRecurse, soFreshen, soReplace);
の組み合わせを上手くすれば相対パスで圧縮されたファイルが作られると思うけど限界になったので休憩する。


休憩を終えて追記1回目:
使い方としては、
ほげほげ.StoreOptions := [soStripPath, soFreshen, soReplace];
などと指定する。
無指定だと、絶対パスを含むフォルダ構成で圧縮ファイルを作成するオプションのようだ。
soStripPath はフォルダ構成を無くして圧縮ファイルを作成するオプションのようだ。

追記2回目:
ドキュメントというかヘルプファイルを見つけた(苦笑)TurboPower Abbrevia 3.04 | SourceForge.net
soStripDrive
Drive letter information is removed from the stored file name.
(Note: This option is ignored in Linux.)

soStripPath
All path information is removed from the stored file name.

soRemoveDots
All relative path information is removed from the stored file name. For example,
if you call AddFiles with a FileMask of "..\TEST.TXT" ("../TEST.TXT" in Linux),
the parent of the current BaseDirectory is searched for a file named "TEST.TXT".
If the file is found, it is stored as "TEST.TXT".

soRecurse
Subdirectories of the search path are included in the search for files to add or freshen.

soFreshen
When adding an existing item to the archive, the item is freshened.

soReplace
When adding an existing item to the archive, the item is replaced.


2013年5月31日12時10分 追記3回目:
もしかして「TurboPower Abbrevia 」って相対パスでの圧縮ファイルにするのに対応していないのか?と思い始めてる。


2013年5月31日15時07分 追記4回目;
情報の後出しは良くないんですけど、deko さんのサイト[ 続・ZIP で圧縮 / 解凍したい (Delphi 2010 以降) ]を見てこのコンポーネントを使おうと思いました。
これを諦めて 7-zip.dll を使おうかと思い始めてます・・・。

2013年5月31日17時04分 追記5回目:
Twitter で おにさんに助言[ Twitter / onimaro2010 ... ]をいただいて「TurboPower Abbrevia 」を使って相対パスでの圧縮ファイルを作成するのに成功しました。
しかし、このコンポーネントは圧縮ファイルのファイル名の拡張子をチェックして圧縮ファイルにする処理を開始するから Firefox 等のアドオンで使われている xpi ファイルを指定すると「そんなファイルタイプを知らん!」と圧縮ファイルを作成してくれないので困った(´・ω・`)
SaveFileName := ChangeFileExt(SaveFileName, 'xpi');
とするだけじゃアプリケーションのメモリ内だけでファイル名の拡張子が変わるだけだけですし(´・ω・`)


2013年6月1日5時43分 追記6回目:
普通に「delphi ファイル名 変更」でググってファイル名の拡張子変更を解決したw
RenameFile(SaveFileName,ChangeFileExt(SaveFileName, 'xpi'));

upしている過去バージョンは使い物にならないから全部削除だな(´・ω・`)
[PR]

by arigayas | 2013-05-30 15:22 | Delphi Programming | Trackback | Comments(0)
トラックバックURL : http://arigayas.exblog.jp/tb/20521083
トラックバックする(会員専用) [ヘルプ]
※このブログはトラックバック承認制を適用しています。 ブログの持ち主が承認するまでトラックバックは表示されません。
<< Delphi XE Pro -... Delphi XE Pro -... >>