HSPポータル
サイトマップ お問い合わせ


HSPTV!掲示板


未解決 解決 停止 削除要請

2011
0919
あっかdllファイルの配布方法14解決


あっか

リンク

2011/9/19(Mon) 17:51:56|NO.41515

こんにちは。
どうしてもわからなかったので質問させて下さい。
HSPで、hspinetを使用したソフトを作成しました。
その配布方法で、

ウェブサイトから○○.exeをダウンロード
○○.exeを実行
メインのexeファイルや素材、hspinet.dllを指定フォルダにコピー

という方法を考えています。
そこで、

#pack でexeファイルにパックする
zipやlzhに圧縮し、それをexeファイルが解凍

という方法を考えたのですが、

 ΑΑdllファイルはパックできない
◆ΑΑzipやlzhを解凍するプラグインは、
 http://lhsp.s206.xrea.com/hsp_file.html
 を当たりましたが、ユーザーが自分で入れなければならない。

と、実現不可でした。(△なぜ不可かというと、パソコン初心者が使う可能性があるからです。)

上二つ以外の方法、または△妊罅璽供爾特に操作をしなくてもよい方法はないでしょうか?
参考サイトやサンプルスクリプトを載せていただけるとありがたいです。
よろしくお願いします。



この記事に返信する


mamo

リンク

2011/9/19(Mon) 18:10:03|NO.41516

一般的に利用されているzipの場合はWindows標準で解凍が可能(他のソフトの導入の必要なし)
exeファイルとdllファイルを一緒に圧縮
使う側は適当なフォルダ内(指定でもなんでも)で解凍するだけ。

コピーなどさせず解凍(展開)したフォルダ内で使ってもらうようにすれば分かりやすいんじゃない?
最低限の知識としてWindows標準指定のフォルダ(マイドキュメントなど)の場所を知ってもらうとか。



あっか

リンク

2011/9/19(Mon) 18:16:09|NO.41517

返信ありがとうございます。
省略して書いていませんでしたが、実は、exe実行時に、ファイルコピー以外に、
また別の操作(インストールの通知やユーザーへの質問、OSの判別)もしたいのです。
書いてなくてすみませんでした。
zipもいいですが、できればexeでやりたいのですがどうでしょうか?



k5342

リンク

2011/9/19(Mon) 18:24:36|NO.41518

自分は#packしたものをbcopyとmkdirつかってインストーラは作ったことありますけど、
必ずできるとは保証できません。

他の環境では誤動作、なんてこともありえますので。



あっか

リンク

2011/9/19(Mon) 18:28:53|NO.41520

hspinetの説明に、hspinet.dllはパックできませんと書いてありました。
実際にしてみても、WindowsとHSP両方のエラーがでて実行できませんでした。



mamo

リンク

2011/9/19(Mon) 18:30:17|NO.41521

インストーラー形式での配布って事で
学んでおりません。orz



k5342

リンク

2011/9/19(Mon) 18:37:50|NO.41522

これでできない?
とりあえず初回起動のみはできたけど。
実行ファイルのカレントディレクトリにdll作成→処理を続行

Ctrl+F9でexe作ってから実行してね。

exist dir_cur+"\\hspsock.dll"
if strsize!1:bcopy "hspsock.dll",dir_cur+"\\hspsock.dll" #include "Hspsock.as" #pack"hspsock.dll" ipget mes "IP="+refstr stop

とりま、初回起動のみはエラー無しでできた。
その次からはエラー(12)で処理落ちする
出来なかったらごめんなさい。



k5342

リンク

2011/9/19(Mon) 18:40:52|NO.41523

>>No.41522
あーw
すいません。
凡ミスしてました。
こっちのスクリプトだと次回起動時でも対応できます。

exist dir_cur+"\\hspsock.dll"
if strsize!1:else:bcopy "hspsock.dll",dir_cur+"\\hspsock.dll" #include "Hspsock.as" #pack"hspsock.dll" ipget mes "IP="+refstr stop



k5342

リンク

2011/9/19(Mon) 18:48:53|NO.41524

>>No.41517
>>省略して書いていませんでしたが、実は、exe実行時に、ファイルコピー以外に、
>>また別の操作(インストールの通知やユーザーへの質問、OSの判別)もしたいのです。

おお。そでしたか。
邪道ですけどexeでやらなくても特設でWebページ作ってやればどうですか?
アクセス解析とか使えばOSとか解像度とか取得できます。

メールで飛ばすという方法もなくはないですけど自分がやったらウィルス対策ソフトとかが反応したので。



Cookies

リンク

2011/9/19(Mon) 19:04:36|NO.41525

strsizeと比較すべきは-1では?
あと、直後にelseいれるんならstrsize=-1でよいかと。



k5342

リンク

2011/9/19(Mon) 19:19:01|NO.41527

修正版です。
(なんで自分こんなミスばっかりするんだろうな)
exist dir_cur+"\\hspsock.dll"
if strsize=-1:bcopy "hspsock.dll",dir_cur+"\\hspsock.dll" #include "Hspsock.as" #pack"hspsock.dll" ;実行ファイル作成時にパックする ipget ;DLLが必要な処理を続行すると仮定 mes "IP="+refstr stop



あっか

リンク

2011/9/19(Mon) 19:22:55|NO.41529

k5342さんの修正版スクリプトでできました!
ありがとうございました。
ところで、なぜこのスクリプトだとパックできるのでしょうか?



k5342

リンク

2011/9/19(Mon) 19:30:07|NO.41531

#pack(暗号化なし)や#epack(暗号化あり)でexeの中にファイルを埋めこむからです。
詳しくは知りませんが...



Cookies

リンク

2011/9/19(Mon) 19:32:05|NO.41532

>ところで、なぜこのスクリプトだとパックできるのでしょうか?
実行時、DLLが存在しなかったら、
パックしたDLLをディレクトリに展開?保存?するようになってるのです。


exist dir_cur+"\\hspsock.dll" //DLLファイルサイズチェック if strsize=-1{ //もしサイズが-1=存在しなかったら bcopy "hspsock.dll",dir_cur+"\\hspsock.dll" //パックしていたDLLをdir_curに「hspsock.dll」という名で保存。
なんていう説明でいいのかな。



あっか

リンク

2011/9/19(Mon) 20:05:52|NO.41533

いろいろ試してみた結果、
dllのコピー
▲ぅ鵐ルード
#packによるパック
にすると、できることが分かりました。
どうやら、スクリプトの順序が原因だろうと思います。
みなさんありがとうございました。
初心者で、知識がない中学生なので、とても助かりました。
これからもよろしくお願いいたします。



ONION software Copyright 1997-2021(c) All rights reserved.