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


HSPTV!掲示板


未解決 解決 停止 削除要請

2015
1212
entecアップデート機能7解決


entec

リンク

2015/12/12(Sat) 13:30:19|NO.73577

hspでソフトのアップデートをしたいのですが、具体的にどのようにすればいいのでしょうか
こんな感じでやりたいです:

1.テキストファイルをダウンロード
2.バージョン確認
3.もし最新バージョンでなかったら、新しい実行ファイルをダウンロードして、
 古いほうを削除する

サンプルなど掲載していただければうれしいです
お願いします!



この記事に返信する


nasu

リンク

2015/12/12(Sat) 18:04:40|NO.73580

僕もなやんでいるんですよね...
hspinetを使えばいけるでしょうけど...



kanamaru

リンク

2015/12/12(Sat) 20:41:11|NO.73581

その方法でもできますが、dpmを書き換えるという方法もあります。
http://hsp.tv/play/pforum.php?mode=pastwch&num=66681
後、hspinetもいいですが、IEコンポーネントでもできますよ。



Okay

リンク

2015/12/12(Sat) 22:06:06|NO.73583

難しすぎてさっぱり。。。



entec

リンク

2015/12/13(Sun) 17:15:26|NO.73595

SiteMixのファイルマネージャーを使って、ルートディレクトリに
text.txt
というファイルを置いて以下のスクリプトを実行しましたがうまくいきません


#include "hspinet.as" ; ; ファイルの取得(ループあり) ; netinit if stat : dialog "ネット接続できません。" : end neturl "http://サイト名.sitemix.jp/" netrequest "text.txt" mes "DOWNLOAD 開始" *main ; 結果待ちのためのループ netexec res if res > 0 : goto *comp if res < 0 : goto *bad await 50 goto *main *bad ; エラー neterror estr mes "ERROR "+estr stop *comp ; 完了 mes "DOWNLOAD 完了" stop



zakki

リンク

2015/12/13(Sun) 18:18:17|NO.73596




zero

リンク

2015/12/13(Sun) 22:11:58|NO.73599

>具体的にどのようにすればいいのでしょうか

書かれている通りにコードを書けばいいと思います。
簡単なサンプルですが、作ってみました。
ご参考になればと思います。
私はSiteMixは使っていないので検証していませんが、
FC2ホームページで試してみた限りでは正しく動いているようです。
もし、お使いのホームページサービスとの関係上、ファイルのダウンロードが
何らかの原因でできないということでしたら、以下のプログラムはあまり意味がありません。

・前提1
実行ファイルのあるフォルダ内に
 hspinet.dll
 update.bat (後述)
が必要です。バッチファイルは実行ファイルの更新時に使用します。
以下の例では、アプリケーション名(実行ファイル名)は "myapp.exe" とします。

・前提2
更新ファイルを置いておくサーバーに、
 version.txt
 <実行ファイル名>.exe
を置いておきます。私の場合(FC2ホームページ)は、それぞれ
 http://***.web.fc2.com/version.txt
 http://***.web.fc2.com/<実行ファイル名>.exe
のようにアクセスできる状態にしておきます。

・version.txt
テキストファイルの1行目にバージョン文字列を書いておく。

・メインプログラム

#include "hspinet.as" // 実行ファイル名(※大文字小文字まで一致しないと正常にDLできない) #define AppName "myapp" // case sensitive // 現行(この.exeの)バージョン #define VERSION "1.4.0" #packopt name AppName #define UpdateSiteName "http://*********.web.fc2.com/" #define UpdateVersionFileName "version.txt" title "更新プログラム サンプル ver " + VERSION button "更新チェック", *updateCheck stop if 0 { // downloadFile URL文字列, ファイル名, タイムアウト時間[ms] // @return netexecの結果 | タイムアウトなら0 #deffunc downloadFile str url, str fileName, int timeout neturl url netrequest fileName repeat timeout/5 netexec res if (res != 0) : break await 5 loop return res } *updateCheck netinit if stat { dialog "ネットに接続されていないため、更新を確認できません。", 1, "Error" stop } mes "バージョンを確認しています..." downloadFile UpdateSiteName, UpdateVersionFileName, 5000 res = stat if (res == 0) { // タイムアウト dialog "タイムアウトしました。", 1, "Error" stop } if (res < 0) { // 取得失敗 neterror estr dialog "更新を確認できませんでした。\n" + estr, 1, "Error" stop } // 正常にDL完了の場合 notesel buf noteload UpdateVersionFileName noteget ver, 0 noteunsel if (ver == VERSION) { // バージョン表記文字列が同じなら同バージョンと見なす dialog "お使いのプログラムは最新版です。" stop } // 更新がある場合 dialog "更新可能なバージョンがあります。更新しますか?", 2 if (stat == 7) : stop // いいえ // 「はい」の場合 netdlname AppName + ".exe.temp" // ファイル名を一時的に変える downloadFile UpdateSiteName, AppName + ".exe", 50000 // 重さによってタイムアウト時間は変える if (res == 0) { // タイムアウト dialog "タイムアウトしました。", 1, "Error" stop } if (res < 0) { // 取得失敗 neterror estr dialog "更新を確認できませんでした。\n" + estr, 1, "Error" stop } // 更新後、再起動 dialog "更新して再起動します。" // exec "update.bat" の代わりに; newcom ws, "WScript.Shell" ws->"Run" "update.bat", 0 end


・update.bat
以下をメモ帳などで編集してupdate.batというファイル名で保存。

@echo off rem アプリケーションの終了を待つ timeout /t 3 /nobreak rem 現行実行ファイルを削除する del myapp.exe rem 更新実行ファイルをリネームする ren myapp.exe.temp myapp.exe rem 更新して再起動 start myapp.exe


以上。
製作者は、プログラムを更新する→
プログラム内のVERSIONを書き換えて再コンパイル→
実行ファイルをアップロード→
ホームページサーバー内のversion.txtを書き換える
という流れで更新作業をすればOKとなります。



entec

リンク

2015/12/14(Mon) 16:12:38|NO.73606

どうやら、ファイルを置く場所が間違っていたようです。
SiteMixでは、ルートフォルダでなく、/siteフォルダにファイルを入れる必要があったようです。
初歩的なミスですみません。
zeroさんのスクリプトも非常に参考になりました。
ありがとうございました!



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