>具体的にどのようにすればいいのでしょうか
書かれている通りにコードを書けばいいと思います。
簡単なサンプルですが、作ってみました。
ご参考になればと思います。
私は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となります。