Delphi Tips
>> Index
● 10/15 EXE ファイルのスリム化
● 06/25 Install Shield Express でアンインストール時にレジストリを削除できない
● 08/25 ComCtl32.DLL を配布するには
● 09/15 Install Shield でアンインストール時にレジストリが掃除されない
● 02/08 DDeClientConv を使ってスタートメニューにアイコンを登録
● 02/08 Internetコンポーネントが他のマシンで動かない
最終更新: 6978 日前
0302 D1D2 D3 D4 D5 D6 D7 3.195 98 作成: 2000/06/01 osamu rev 1.4 B1 B3 B4 B5 B6 B7 NT3 NT4 2K XP 更新: 2005/10/15 nameless <> 編集
EXE ファイルのスリム化
.exe ファイルを圧縮しておき、実行時に自動的に解凍することで、.exe ファイルを小型化することの出来るソフトがいくつか出回っています。フリーソフトでは ezip, upx、商用ソフトでは aspack というものが有名なようです。
ezip>
http://web.archive.org/*/http://www.jonathanclark.com/ezip/ezip.exe
upx>
http://upx.sourceforge.net/
aspack>
http://www.entechtaiwan.com/aspack.htm
圧縮ではなく、W32 PE EXE ファイルのの 'reloc' セクションを削除してしまう方法もあります。reloc が無くても EXE はメモリー空間に Windows のローダがチャンと割り付けてくれます。(DLL は削除してはいけません)
StripReloc>
http://www.jrsoftware.org/striprlc.htm
参照: <開発環境> <アプリケーション>
0335 D1 D2 D3 D4 D5 D6 D7 3.1 95 98 作成: 2003/06/25 osamu rev 1.1 B1 B3 B4 B5 B6 B7 NT3 NT4 2K XP 更新: 2003/06/25 osamu 編集
Install Shield Express でアンインストール時にレジストリを削除できない
> Delphi3.1に付属の InstallShield Express にてインストール時
> に設定したキーをアンインストール時に掃除させようとしているの
> ですがうまくいきません。(キーが全く削除されない)
私もキーが削除できなくて困った経験があり、何かのショー(忘れました)で、インストールシールドをデモしているブースがあったので、聞いてみたところ、Delphi付属のInstallShieldでは「出来ません」という簡単な回答でした。
では、どうすればよいかと尋ねたところ、Professional版(有料)を購入し、自分でプログラミングしてください、ということでした。(ほかにもいろいろな機能を持っているそうです)
参照: [Delphi-ML:32275] <開発環境>
0158 D1D2 D3 D4 D5 D6 D7 3.195 98 作成: 1999/02/11 osamu rev 1.2 B1 B3 B4 B5 B6 B7 NT3NT4 2K XP 更新: 2000/08/25 ITO, Sakuya 編集
ComCtl32.DLL を配布するには
Delphi4 で作成した ComCtrl32.DLL のバージョンに依存するプログラムに ComCtl32.DLL を添付して配付すると MS の EUL に違反します。CDに入ってる 40comupd.exe を添付すれば問題はないです。
インストーラを利用する場合は /q をオプションにつけて呼び出すとMicrosoft の承諾文章が出ませんがその場合の注意点なんてのもあるので詳しくは Microsoft のサイトの EUL を読んでください。
# まあ、Win95/Win98, WinNT で ComCtl32.DLL に互換性ないし
# ComCtl32.DLL を含めて配付できたとしても面倒ですね。
//2000.08.25 by Sakuya ITO
その時点で最新のComCtl32.DLLの配布用インストーラ ??comupd.exe は、Microsoftの次のURLからダウンロードできます。これ1本で日本語を含む各国言語に対応しています。
http://www.microsoft.com/msdownload/ieplatform/ie/comctrlx86.asp
参照: [Delphi-ML:30766] <Windows>
0255 D1 D2 D3 D4 D5 D6 D7 3.1 95 98 作成: 1999/09/15 osamu rev 1.1 B1 B3 B4 B5 B6 B7 NT3 NT4 2K XP 更新: 1999/09/15 osamu 編集
Install Shield でアンインストール時にレジストリが掃除されない
Install Shield で作ったアンインストーラは、元々有ったレジストリのキーは削除しないようにできています。
したがって、同じソフトをアンインストールしないで、2度続けてインストールすると、
1 最初のインストールで、キーを作る。
2 2回目のインストール時に、キーが既に有るので、
「これは、元々有ったキーに値を設定するのだな」と認識される。
3 Unistall Shield が起動したときに、1で作ったキーは
2で「元々有ったキー」と認識されているので、削除されない。
という風になってレジストリの情報が残ってしまうみたいです。バージョンアップの配布などでは何か策を講じる必要がありそうですね。
#[Delphi-ML:32250] の質問の原因がこれかどうかはちょっと疑問
参照: [Delphi-ML:32315]
0105 D1 D2 D3 D4 D5 D6 D7 3.1 95 98 作成: 1999/02/08 osamu rev 1.1 B1 B3 B4 B5 B6 B7 NT3 NT4 2K XP 更新: 1999/02/08 osamu 編集
DDeClientConv を使ってスタートメニューにアイコンを登録
3.1 のプログラムマネージャのときと同じですね。
DDEClientConv をフォームに置いて以下のようにします。
var strGroup:String;
strExeName:String;
strPrgName:String;
Temp:String;
begin
strGroup := 'グループ名';
strPrgName := 'ソフト名';
strExeName := Application.ExeName;
if not DDEClientConv1.SetLink('PROGMAN','PROGMAN') then begin
ShowMessage('ショートカットの制作に失敗しました。');
end else try
{グループの作成}
Temp := '[CreateGroup(' + strGroup + ')]';
DDEClientConv1.ExecuteMacro(PChar(Temp),False);
{グループの表示}
Temp := '[ShowGroup(' + strGroup + ',1)]';
DDEClientConv1.ExecuteMacro(PChar(Temp),False);
{アイテムの作成}
Temp := '[AddItem("' + strExeName + '","' + strPrgName + '")]';
DDEClientConv1.ExecuteMacro(PChar(Temp),False);
ShowMessage('ショートカットを作成しました。');
finally
DDEClientConv1.CloseLink;
end;
end;
参照: [Delphi-ML:21012] <その他Windows関連> <ShellApi> <Windows> <スタートメニュー>
0036 D1 D2 D3 D4 D5 D6 D7 3.1 95 98 作成: 1999/02/08 osamu rev 1.1 B1 B3 B4 B5 B6 B7 NT3 NT4 2K XP 更新: 1999/02/08 osamu 編集
Internetコンポーネントが他のマシンで動かない
Delphiに付属のftpなどのInternetコンポーネントはOCXとして実装されているので、アプリケーションの配布時にOCXもいっしょに配布してやる必要がある。
必要なファイルは、http://www.niftyserve.or.jp/forum/fdelphi/faq/00025.htmにまとめられているので、これらを Install Shield を使って配布することになる。
やり方は、Nifty Serve の FDELPHI、12番会議室の発言番号 01382 に詳しく書かれたとのことで、濱野@MICさんが[Delphi-ML:18991]で引用して解説なさってます。
ispとinstallをキーにして過去ログを検索するといろいろな情報を集めることができる。
http://leed.t.u-tokyo.ac.jp/~takeuchi/delphi/search.cgi
これを嫌って、DSPなどにあるTCI/IP Component Pack(ファイル名:tcpip.zip)などのフリーのコンポーネントを使う方を好む人も多い。
参照: [Delphi-ML:7327] [Delphi-ML:18991]
[新規作成] [最新の情報に更新]
How To
Lounge
KeyWords
Osamu Takeuchi osamu@big.or.jp
Tips
Delphi
Home