1

InstallJammer を使用して、アプリケーション (Windows、Linux、および Mac) のクロスプラットフォーム インストーラーをビルドしています。ただし、InstallJammer の開発は中止され、公式フォーラムは現在閉鎖されています。

Windows 7 のサポートを追加するには、Windows のインストール マニフェストに変更を加える必要があるため、Windows 用のインストールキットをビルドする必要があります (そうしないと、インストーラーは「このプログラムは正しくインストールされていない可能性があります」というメッセージを表示します)。

ここから最新のインストールキットのソースを入手しました: http://sourceforge.net/projects/installjammer/files/installkit/1.2.15/installkit-1.2.15.tar.gz/download

このトピックhttp://www.installjammer.com/forums/viewtopic.php?f=3&p=9258を見つけて、始めるのに役立ちました。

MinGW の最新バージョンを取得し、./configure && make と入力しました。ビルド プロセスを開始しましたが、TCL をコンパイルしようとしたときに次のエラーが発生しました。

c:/installkit-1.2.15/src/tcl/win/tclWinReg.c:750:29: error: lvalue required as increment operand

これらのソースはちょっと古いので、古い GCC バージョン (私は 4.7.2 を使用していました) で試してみるべきだと考えました。そこで、MinGW の GCC をバージョン 3.4.5 にダウングレードして、再試行しました。

今回は、TCL が正常にビルドされました。「miniarc」と呼ばれるもののビルドに失敗するまで (それが何であるかはわかりません)、次のエラー メッセージが表示されるまで、すべてが順調に進んでいました。

miniarc.o:miniarc.c:(.text+0x370c): undefined reference to `_imp__strtoull'
miniarc.o:miniarc.c:(.text+0x37c9): undefined reference to `_imp__strtoull'
miniarc.o:miniarc.c:(.text+0x3cb6): undefined reference to `_imp__strtoull'
miniarc.o:miniarc.c:(.text+0x3e78): undefined reference to `_imp__strtoull'
miniarc.o:miniarc.c:(.text+0x3e9f): undefined reference to `_imp__strtoull'
miniarc.o:miniarc.c:(.text+0x3ff5): more undefined references to `_imp__strtoull' follow
collect2: ld returned 1 exit status

奇妙なことは、miniarc.c 内にimp _strtoull への参照がないことです。

先に進み、他に何をすべきかわからなかったので、Ubuntuでビルドしようとしましたが、うまくいきました! GCC のバージョンは 4.4.3 でした。そこで、MinGW の GCC 4.4.3 を探しに行きましたが、最も近いバージョンは 4.4.0 でした。これらをつかんで、もう一度試しました。同じ tcl ビルド エラー (tclWinReg.c に関して)。

その後、GCC 4.7.2 に戻り、TCL & TK ソース (8.4) を最新のもの (8.5) に置き換えて、もう一度試しました。

TCL と TK は両方とも正常にビルドされ、他のいくつかのライブラリも正常にビルドされましたが、「miniarc」に関しては、再び失敗しました。今回は別のエラーで:

undefined reference to `TclIncrVar2'

どうやら、この関数は TCL 8.5 には存在しません。

だから、私はアイデアがありません。私は最初の (そして唯一の) InstallJammer 開発者にメールを送ってみましたが、まだ返事がありません (彼のメールアドレスが同じかどうかさえわかりません)。

誰か提案はありますか?

編集: Makefile の経験はほとんどなく、最後に C でコーディングしたのは 8 年前の大学時代だったことを付け加えておきます。そのため、これらすべてについて、私が気付かなかった明らかなことがあればお詫び申し上げます。

4

1 に答える 1

0

私は解決策が好きではありませんが、これが私がそれを機能させた方法です:

  1. GCC 3.4.5 を使用して、./configure && make; と入力して make プロセスを開始しました。
  2. make プロセスは、'miniarc' に到達するとエラー (上記) で停止します。
  3. 次に、手動で、ファイル strtoull.o から DLL (strtoull.dll) を作成しました (以下は、私が入力した正確なコマンド ラインです)。

    gcc -pipe -shared -o strtoull.dll strtoull.o -lz -L/c/installkit-1.2.15/Windows/lib /c/installkit-1.2.15/Windows/lib/libtclstub84s.a"
    
  4. その後、strtoull.dll を miniarc/build と windows/system32 にコピーしました。

  5. 次に、フォルダー miniarc/build に入り、次のように入力しました。

    gcc -pipe -shared -o miniarc01.dll miniarc.o sha1.o md5.o -lz -L/c/installkit-1.2.15/Windows/lib  "/c/installkit-1.2.15/Windows/lib/libtclstub84s.a" strtoull.dll
    
  6. 最後に、make をもう一度入力して、残りの部分のビルドを続行できるようにしました。

于 2012-12-06T13:50:09.397 に答える