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


HSPTV!掲示板


未解決 解決 停止 削除要請

2015
0929
SqOc配布後ソフトにアップデート機能的な物をつけたい9未解決


SqOc

リンク

2015/9/29(Tue) 01:12:36|NO.72024

配布後ソフトにアップデート機能的な物をつけたいです。

具体的にいうと、
本体のEXEファイルはそのままでいいのですが、そのEXEファイルと一緒に入れられている
テキストの中身を外部から変更できるようにしたいです。

EXEを起動したときに自動でテキストを変更させるサーバー的なものにアクセスして、テキストを
更新するといった感じにしたいです。

インターネットを使うことになると思うですが、hspのインターネットについてはあまり
載っていないようだったので、質問させていただきました。

どなたかわかる方、回答お願いします!!



この記事に返信する


skyblue

リンク

2015/9/29(Tue) 07:12:39|NO.72025

pack機能を使っている場合は難しいです。
それ以外は可能です。
pack機能を使う場合はローカルのどっかに保存して
そっちを優先して使うようにしないといけない

HSPでのインターネットにはhspsockとhspinet,Win32APIの三種類が代表的です。



ゼーット!!

リンク

2015/9/29(Tue) 11:30:08|NO.72026

テキストファイルをサーバからダウンロードして読みこむ動作であれば、
HSPのサンプルフォルダ(sample¥hspinet¥)にある、
test2.hsp
あたりを参考にすれば良いのではないかと思います。



くちくん

リンク

2015/9/29(Tue) 17:47:15|NO.72027

難しいけど更新用ソフトを作って、

1.テキストファイルをネットからダウンロード
2.テキストの中身(変数)を新しく
3.変数だけ変えて新しく実行ファイル作成

っていう流れでいいかも。
使えそうなのは、

・notesel ・noteload ・hsc_ini ・hsc_refname ・hsc_objname ・hsc_comp ・pack_ini ・pack_rt ・pack_opt ・pack_make ・pack_exe
とか。



Snake

リンク

2015/9/29(Tue) 18:12:29|NO.72029

bcopyで実行ファイル内からアップデートプログラムを抽出し、起動する。
例:bcopy "updatenotifer.exe","updatenotifer.exe"

そのプログラムは、こんな感じの内容で。

1.最新バージョンを確認。現在のプログラムのバージョンが最新Verと違う場合は2へ進む。
 最新版の場合、ダイアログを表示して終了。
2.サーバーからアップデートする必要のあるファイルをリストアップしたテキストファイルを
 ダウンロードして、noteloadで読み込む。
3.repeat notemaxで行の数だけリピート。noteget dlfile,cntでダウンロードしていく。
---3の例---

〜略〜 repeat notemax noteget dlfile,cnt netload ""+dlfile loop dialog "ダウンロード完了" ・・・



yt

リンク

2015/9/29(Tue) 19:22:18|NO.72032

一緒に入れられている、というのは
テキストファイルがexeファイルと同じフォルダに同梱されているということでしょうか?
同梱されている場合はhspinet(HSPのsampleフォルダにサンプルあり)を使えば変更できます。
packfileを使っている場合はあとから変更することはできません。



(´ω`)

リンク

2015/9/30(Wed) 18:46:17|NO.72059

ネトゲとかの場合だと、アップデータを専用に用意しておいて、

1:真っ先にアップデータを起動
2:サーバ上の各ファイル(exe含む)とローカルファイルのバージョンをチェック
3:ローカルのバージョンが古い物はサーバからダウンロード
4:ゲーム本体起動

とやりますね。
バージョンの確認方法は、各ファイルのバージョンをテキスト等に記述し、それで比較を
するのが一番確実です(各ファイルのタイムスタンプ比較だと間違いが起きやすい)。
あと、このやり方ならアップデータ以外は好き勝手に更新できるという利点もあります。


バージョン管理が面倒だな、という場合はヒストリー方式もあります。

これは、更新情報のテキストにはファイル名がずらっと並んでるだけで、ローカルでは
そのファイルリストの何番目までを更新した、という情報だけを記録しときます。
アップデートをする場合は、そのテキストに更新したいファイル名を追記するだけでよく、
ローカル側はまずそれをダウンロードし、前回よりも記述ファイルが増えてるならそれを
順次ダウンロード。

これのメリットは、更新の順番が問題となる場合が楽だということと、新たなファイルの
追加も楽ということ。また、ローカルが何らかの原因で再インスコした場合でも、リストに
従い最初から順次ダウンロードすれば、間違いなく最新版と一致します。



とまあ、長々と述べましたが、おっしゃられるような更新頻度の高いテキストであれば、
ぶっちゃけpackなどはせずにHTMLで記述したのをhttpサーバに置いておき、netload命令や
IEコンポーネントでURLを直接開くのが一番てっとり早いかと。(´ω`)



にゃんちゃん

リンク

2015/10/1(Thu) 18:48:51|NO.72079

私の場合、以下のようにしてアップデータを実装しています。
・実行ファイル(たとえばmain.exe)とは別に、updater.exeを配布する。
・アップデータは、コマンドラインで特定のパラメータを受けなければ起動しないようにする。
・ソフトを起動すると、サーバからアップデート情報を取得して、バージョンを比較する。
・バージョンが違ったら、アップデータにコマンドライン経由で情報を渡して、メインプログラムを終了させる。
・アップデータが立ち上がって、必要なファイルをダウンロードしてくる。メインプログラムは起動していないので、アップデータ自身を除く全てのファイルを更新できる。
私は、複数ファイルを落とすのがめんどくさかったので、自動で始まる自己解凍ファイルを作って、ダウンロードしたらそれを実行し、aplselで終了まで監視してました。



SqOc

リンク

2015/10/2(Fri) 17:08:17|NO.72088

すいません。
質問の中にサーバーという言葉を使っていましたが、正直よくわかっていません。
サーバーってどうすれば作れるのですか?



スペース

リンク

2015/10/2(Fri) 17:19:38|NO.72089

>>SqOcさん
簡単なものだとレンタルサーバーでしょうか。
http://www.pc-master.jp/internet/rental-server.html
レンタルサーバーの説明はこちらに乗っています。

レンタルサーバーは無料・有料があり、
無料の場合は広告料で運営されている場合がほとんどです。
もしファイルの保管庫として使う場合は利用規約をしっかり確認してください。



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