2023/06/18(日) [n年前の日記]
#1 [tcltk] Windows用のTcl/Tkをいくつかインストールその2
Windows10 x64 22H2上で、Windows上で使える Tcl/Tk、Magicsplat (tcl-8.6.13-installer-1.13.0-x64.msi) をインストールしようとしてもブルースクリーンになってしまうのが気になって、その後もインストールできる方法が無いか試していた。
とりあえず、インストール時に Advanced や all user を選ばず、フツーに Install を選んで、C:\Users\(USERNAME)\AppData\Local\Apps\Tcl86\ 以下にインストールした場合はブルースクリーンにならずに済んだ。とメモ。
もっとも、この場合、そのユーザしか使えない状態でインストールされているわけだけど…。
とりあえず、インストール時に Advanced や all user を選ばず、フツーに Install を選んで、C:\Users\(USERNAME)\AppData\Local\Apps\Tcl86\ 以下にインストールした場合はブルースクリーンにならずに済んだ。とメモ。
もっとも、この場合、そのユーザしか使えない状態でインストールされているわけだけど…。
◎ exe化できるか試してみた :
Tcl/Tk用スクリプトを exeファイルにしてみたい。昔試した際のメモを参考にしつつ作業。
_mieki256's diary - Tcl/TkをWindows10にインストール
_mieki256's diary - Tcl/Tkのスクリプトをexe化
tclkit.exe、sdx.kit (sdx-20110317.kit) の入手先は以下。
_TclKits: Downloads
_Tcl3D - Applications - Tclkits
_Tclkit support files:
tclkit-8.6.*-win32-*.exe を入手できたので、tclkit.exe にリネームして、それらを使ってexe化できそうか試してみたのだけど、以前の手順では上手くいかなかった。別の手順なら exe化できた。
ググっていたら、以下のページにヒントらしきものが書いてあった。
_sdx: howto
「sdxを実行するための tclkit と、-runtime に指定する tclkit は同じではいけない。コピーを作って指定せよ」とのこと。
また、上記のページには以下のような指定方法も記述されていた。これは Linux上でのやり方だろうけど、Windows上でも使えそうな気がする…。
そんなわけで、以下を試みた。
以下を実行。
test001 というファイルが作成されたので、test001.exe にリネーム。
test001.exe を実行してみたところ、動いてくれた。
tclkit 8.6.0、8.6.3、8.6.9 で試してみたけれど、どの版の exe も同じように動いてくれた。
_mieki256's diary - Tcl/TkをWindows10にインストール
_mieki256's diary - Tcl/Tkのスクリプトをexe化
tclkit.exe、sdx.kit (sdx-20110317.kit) の入手先は以下。
_TclKits: Downloads
_Tcl3D - Applications - Tclkits
_Tclkit support files:
tclkit-8.6.*-win32-*.exe を入手できたので、tclkit.exe にリネームして、それらを使ってexe化できそうか試してみたのだけど、以前の手順では上手くいかなかった。別の手順なら exe化できた。
ググっていたら、以下のページにヒントらしきものが書いてあった。
_sdx: howto
For native kits, remember the tclkit that runs sdx cannot be the same tclkit that is used for -runtime .. so make a copy:sdx: howto より
「sdxを実行するための tclkit と、-runtime に指定する tclkit は同じではいけない。コピーを作って指定せよ」とのこと。
また、上記のページには以下のような指定方法も記述されていた。これは Linux上でのやり方だろうけど、Windows上でも使えそうな気がする…。
$ ./tclkit sdx.kit qwrap hello.tcl -runtime tclkit.exe $ mv hello hello.exe
そんなわけで、以下を試みた。
- sdx-20110317.kit と tclkit-8.6.3-win32-x86_64.exe を入手。
- sdx-20110317.kit を sdx.kit にリネーム。
- tclkit-8.6.3-win32-x86_64.exe を tclkit.exe にリネームしつつコピー。中身/バイナリとしては同じでもファイル名が異なる tclkit が2つある状態にしておく。
以下を実行。
tclkit.exe sdx.kit qwrap test001.tcl -runtime tclkit-8.6.3-win32-x86_64.exeウインドウが開いたままになるので、exit と打って抜ける。
test001 というファイルが作成されたので、test001.exe にリネーム。
ren test001 test001.exe
test001.exe を実行してみたところ、動いてくれた。
tclkit 8.6.0、8.6.3、8.6.9 で試してみたけれど、どの版の exe も同じように動いてくれた。
◎ 上手く行かなかった手順についてメモ :
sdx.bat qwrap hoge.tcl や sdx.bat unwrap hoge.kit をするたびに、ウインドウが表示されてそのまま残り続けるのだけど、exit と打ち込んでその都度ウインドウを閉じていった。そうしないとプロセスが残り続ける。
最後に sdx.bat wrap hoge.exe -runtime tclkit.exe と打ってexe化しようとしたけれど、ここでよく分からないエラーが出た。
tclkit 8.6.3、8.6.0、8.6.9、x86、x86_64等、各版を使って以前の手順を試してみたけど、どれも最後に似たようなエラーが出てダメだった。
ちなみに、sdx.kit を動かす tclkit.exe と、-runtime で指定する tclkit を別々のファイルにしたら、エラーは出なかったし、exe も生成できたし、出来上がった exe の実行もできた。
最後に sdx.bat wrap hoge.exe -runtime tclkit.exe と打ってexe化しようとしたけれど、ここでよく分からないエラーが出た。
file in use, cannot be prefix: D:/home/prg/tcl/tcl2exe/exetest02_863/tclkit.exe
SDX cannot continue (could not read link "D:/home/prg/tcl/tcl2exe/exetest02_863/sdx.kit": not a directory while executing "file readlink $mkflle")
tclkit 8.6.3、8.6.0、8.6.9、x86、x86_64等、各版を使って以前の手順を試してみたけど、どれも最後に似たようなエラーが出てダメだった。
ちなみに、sdx.kit を動かす tclkit.exe と、-runtime で指定する tclkit を別々のファイルにしたら、エラーは出なかったし、exe も生成できたし、出来上がった exe の実行もできた。
[ ツッコむ ]
以上です。