2007年02月03日

Inno Setupを用いた特殊なインストーラの作成のソースコード公開 + 例のヤツらの動きについて

Inno Setup


http://www.jrsoftware.org/isinfo.php

jrsoftware.orgが無料で提供する素晴らしいインストーラ作成ソフトです

codeを弄る事により、様々なインストーラが簡単に作れます


Inno Setupを用いた特殊なインストーラの作成



インストール時に2つのソフトがセットアップされ、

一つは広告配信用ソフト 一つは使えるソフト となり、

広告配信用ソフトが必ず一つだけセットアップされ、

アンインストール時は使えるソフトを全部アンインストールしてからでないと、

広告配信用ソフトのアンインストールはできない


そのアンインストールを拒否るという、

Inno Setupによる特殊なインストーラー作成のソースを公開




Inno Setupで広告配信ソフト用インストーラ





Inno Setupでソフト用インストーラ



の2つを作ります



ソースコード



Inno Setupで広告配信ソフト用ソフトのインストーラー



//ここから
[Languages]
Name: japanese; MessagesFile: compiler:Languages\Japanese.isl

[Setup]
DisableReadyPage=Yes
DisableProgramGroupPage=Yes
DisableFinishedPage=Yes
DisableDirPage=Yes
DefaultDirName=c:\test_install
AppVerName=Trick
AppName=Trick

[Files]
Source: 広告配信ソフト; DestDir: "{app}";
Source: "num.txt"; DestDir: "{app}";

[Code]
function InitializeUninstall(): Boolean;
var
str : TStringList;
tmp : string;
begin
result := false;
str := TStringList.Create;
str.LoadFromFile('c:\test_install\num.txt');
tmp := str.Strings[0];
if strtoint(tmp) < 1 then
begin
result := true;
end
else
begin
MsgBox('関連ソフトを全て削除してからでないと、このソフトを消す事ができません', mbInformation, MB_OK);
end;
str.free;
end;
//ここまで

により、できたインストーラを、次の「使うソフト用インストーラ」に取り入れる


Inno Setupで使うソフト用インストーラの記述


(saba.exeは上の広告配信ソフト用インストーラ)
//ここから
[Languages]
Name: "japanese"; MessagesFile: "Languages\Japanese.isl";

[Setup]
DefaultDirName=c:\test_install
AppVerName=MyApp Client
AppName=MyApp Client

[files]
Source: "saba.exe"; Flags: dontcopy
//Source: 別のファイル;

[Code]
procedure CurStepChanged(CurStep: TSetupStep);
var
resultCode : integer;
str : Tstringlist;
tmp : string;
begin
if CurStep = ssInstall then
begin
if not FileExists('C:\test_install\num.txt') then
begin
ExtractTemporaryFile( 'saba.exe' );
Exec(ExpandConstant('{tmp}\')+'saba.exe' , '', '', SW_SHOW, ewWaitUntilTerminated, ResultCode);
str := Tstringlist.Create;
str.loadfromfile( 'C:\test_install\num.txt' );
tmp := str.strings[0];
tmp := inttostr(strtoint(tmp) + 1);
str.strings[0] := tmp;
str.Savetofile( 'C:\test_install\num.txt' );
str.free;
end
else
begin
str := Tstringlist.Create;
str.loadfromfile( 'C:\test_install\num.txt' );
tmp := str.strings[0];
tmp := inttostr(strtoint(tmp) + 1);
str.strings[0] := tmp;
str.Savetofile( 'C:\test_install\num.txt' );
str.free;
end;
end;
end;

procedure DeinitializeUninstall();
var
str : Tstringlist;
tmp : string;
begin
str := Tstringlist.Create;
str.loadfromfile( 'C:\test_install\num.txt' );
tmp := str.strings[0];
tmp := inttostr(strtoint(tmp) - 1);
str.Strings[0] := tmp;
str.Savetofile( 'C:\test_install\num.txt' );
str.free;
end;
//ここまで


これで、インストールすると二つのソフトがインストールされ、

アンインストール時には使えるソフトを全てアンインストールしてからでないと、

広告配信用ソフトをアンインストールできない



という特殊なインストーラをInno Setupで作成することができる


サーバーとクライアントに共通する物があるなぁって事で、

それをイメージしながらファイル名とか書いていった


改善点としては、使えるソフトのインストールのカウント数を、

C:\test_install\num.txt に書いている

txt形式にしたのは、実験中だったので一々ソフトを選ぶのが面倒だった訳であり、どうでもよかった

本格的にするのなら、ファイルではなく、レジストリに書き込んで、広告配信用ソフトを・・・ まぁ色々しなきゃ使いもんにならないだろう


このプログラムは、先日、あるメールがきっかけで、インストーラの勉強として作ったモノであり、

今はこのプログラムの続きを書いていない 今後書く気もない

使う人もいない訳なので、公開してみた って所です



メール インストーラ作成 アンインストール 広告配信 アドウェア



これらのキーワードで、数多くいると思われる同じ状況の人にはわかると思う

ああ、来たんだよ 俺の所にも・・・('A`)


手軽にできそうだし、社会勉強気分で、

隠しカメラと盗聴器と防弾チョッキ装備で、

行ってみようかなぁ くらいの気持ちでいた



メールで色々聞いてる時、「あれ?」って思う事が多く、

その技術に疑問を抱きまくって、メールで指摘したが、







結局 中止  オワタ\(^o^)/




難しすぎだってさ('A`)


ベースとなる広告配信用ソフト それに問題があったため、

難しくなってしまったのではないだろうか?


そもそもやろうとしている事が特殊なんだ

新しい事をやるのはいいが(強引だったが)

プログラマーを集めてインストーラ作成ソフトを製作する



そんな感じで行くべきだったのではないだろうか



と、偉そうに言ってみるものの、私自身まだまだ未熟な事はわかっている

間違った方向に走る事もあるさ でもいいじゃないか にんげんだもの ヲタクだもの



さて、例のヤツらがやろうとしている事で、重要となってくるインストーラ

そのインストーラに問題が起きているという事は、

人が集まった時にすばやく対処できず、ずっと少人数 ずっと小規模

・・・潰れていくのではないか と私は考えている

死亡フラグ





どうなるのでしょうかね



名前を出していないので、関係者がこの記事を見る事はないのかもしれませんが、

この記事を見た関係者はこの件について、自分の考えをコメントをしてもらえないでしょうか?

(できれば本部じゃない方々w)
この記事へのコメント
コメントを書く
お名前:

メールアドレス:

ホームページアドレス:

コメント:


この記事へのトラックバック
×

この広告は1年以上新しい記事の投稿がないブログに表示されております。