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


HSPTV!掲示板


未解決 解決 停止 削除要請

2024
0505
qwerty自作ランチャーアプリを作りました!10解決


qwerty

リンク

2024/5/5(Sun) 23:36:14|NO.101667

自作のランチャーアプリを作ったのでぜひ使ってみてほしいです!

https://drive.google.com/file/d/1Cc8V2cgA_FxRVDcIqHD5iUOguAbUr4uo/view?usp=sharing

Google Driveで今ダウンロードできるようにしてますが、何か他の方法がよかったらお教えしてくださると僕が喜びます。



この記事に返信する


名無し

リンク

2024/5/6(Mon) 04:32:38|NO.101669

DLしてみました。
こちらの環境では「下記のフォルダに」から始まる、起動後3画面目の所で、
「ドライブの残り容量が足りません。」と表示されて先に進めませんでした。
C:\がデフォルトだったのでそちらと、Dドライブ直下やダウンロードフォルダなど、
幾つか試してみましたが何れも同じ結果でした。
当然ですが、どのドライブも2MBどころか100GB以上の空きがある状況です。
Windows10 22H2

細かいですが気になった点。
起動後最初の画面、
・「「qwerty-X」フォルダを」とありますが、
 ソフト名や3つ目の画面で「「qwerty-XX」フォルダを生成」とあることから、
 おそらくXが一つ抜けてる気がします。
・2つ目の画面に記載のある「商用、非商用問わず無料で」の記載、
 音楽や画像などの素材やスクリプトなどの配布サイトでの記載は見かけますが、
 ランチャーソフトの場合「商用利用」というのは多分無いので記載不要かなと思いました。

最後に、自分もですが一般論として、
exeファイルは結構セキュリティ上不安なところがあります。
HSPユーザーとしてはアイコンがHSPのものであるとか、
説明書もしくはreadmeなどのファイルがあるとか、
そういった所があれば(誤差レベルな気もしますが)気分的には違うのかなと自分は思います。
要するに「HSP製か判断つかないexeファイル単体」というのが
他の配布されてるソフトに比べて不安を増す要素になってるのかなと。
(アイコンについては要因の一つとして示したのみの意図であって、
デフォルトのアイコンを使えという意味ではありません)



ABATBeliever

リンク

2024/5/6(Mon) 17:17:50|NO.101670

試してみました〜
・展開先がデフォルトでC直下なのが問題
・展開先の\が一つしかないのが誤作動の原因? -> 改善せず
・文字サイズが読みやすくなってていいね
・展開サイズも書かれていていいね
・exe単一で2MBは多すぎるかもしれない 展開ツールならzip圧縮してPackage.cabとかそれっぽい名前にして、APIで展開すればいいかも
・容量不足エラーで進めなかった -> もしやexist命令とかdirlist命令とか使ってる? 空き容量が多すぎる場合オーバーフローして-1になっちゃうのかも API使おう
って感じでした



qwerty

リンク

2024/5/6(Mon) 18:35:49|NO.101671

一応アプリ内から飛べますが、ここに僕のTwitterを置いておきます
https://twitter.com/hoyoqwerty

名無しさんご回答ありがとうございます。


・「qwerty-X」の表記については完全に僕のミスなので次バージョンリリース時にはすぐに直します()
 また二つ目の画面に記載している「・個人、法人、商用、非商用問わず無料でご利用いただけます。」
 を「・個人、法人問わず無料でご利用いただけます」に変更しました。
 このような形で大丈夫でしょうか?(私はこういう規約の書き方に詳しくないので合ってるかとても不安になってしまうのです)
 一応大丈夫そうなのであれば次のバージョンアップ時にこれを適用しようと思っています。
・「「HSP製か判断つかないexeファイル単体」というのが他の配布されてるソフトに比べて不安を増す相曽になってるのかなと。」
 というご指摘ありがとうございます。自分もできる範囲でそういう物をなくしていけたらなと思っています。
 試しにreadmeを書いてみようと思います。またアイコンに関してもqwerty-XXにはqwerty-XX本体以外にもバッチファイルを動かす用の
 別アプリがあるのでそちらを一旦HSP3アイコンのままにしてみようかなとも思ってます。

ABATBelieverさんご回答ありがとうございます。

・圧縮せずにそのまま#epackしてたので今までやったことありませんでしたが()圧縮してみようかなと思います。

それとお二方とも仰っていることとして、
インストール時にストレージの残り容量が十分確保されているのにも関わらず、
「ドライブの残り容量が足りません。」のダイアログが表示され先に進めなくなるということが起こっているようです。
自分のPC環境(Windows11 23H2 残り容量249GB)で実行したところ正常に動いたのでまだ原因がつかめておりません。
本当は質問するときは「教えて!」のスレッドに変えた方がいいかもしれませんがこのまま質問させてください。

現在ドライブの残り容量を確認するスクリプトは以下のようになっています。

if strlen(folderpath)!3:{ drivepath=getpath(strmid(folderpath,0,3),16) }else{ drivepath=getpath(folderpath,16) } getdiskfreespaceex drivepath,0,disksize,0 if disksize<sizebuf:{ dialog "ドライブの残り容量が足りません。",1,"qwerty-XX copyer" stop } 事前情報として //folderpath=qwerty-XXフォルダを生成するフォルダのパス //sizebuf=qwerty-XXフォルダが占める容量(バイト)

ここまで長くなってしまい本当に申し訳ありませんが、
GetDiskFreeSpeceEx関数で空き容量を受け取る変数「disksize」でオーバーフローが発生したという
ことであっていますでしょうか?



qwerty

リンク

2024/5/6(Mon) 18:38:14|NO.101672

・追記
すいません送信してから気づきました。
スクリプト部分の「事前情報として」の部分をコメントアウトするのを忘れてました。
書き直しておきます

if strlen(folderpath)!3:{ drivepath=getpath(strmid(folderpath,0,3),16) }else{ drivepath=getpath(folderpath,16) } getdiskfreespaceex drivepath,0,disksize,0 if disksize<sizebuf:{ dialog "ドライブの残り容量が足りません。",1,"qwerty-XX copyer" stop } //事前情報として //folderpath=qwerty-XXフォルダを生成するフォルダのパス //sizebuf=qwerty-XXフォルダが占める容量(バイト)



qwerty

リンク

2024/5/6(Mon) 19:00:37|NO.101673

すいません...別ドライブ(残り容量885GB)を指定してやってみたら見事に同じ現象に出くわしました...
数値型変数のバッファオーバーフローってどうやって解決したらいいのでしょうか...



qwerty

リンク

2024/5/6(Mon) 20:02:03|NO.101675

再度追記します。
スクリプトのGetDiskFreeSpaceEx関数の呼び出し部分を書いてなかったのでここに書いておきます。

#uselib "kernel32.dll" #func GetDiskFreeSpaceEx "GetDiskFreeSpaceExA" var,int,var,int



沢渡

リンク

2024/5/6(Mon) 22:12:34|NO.101677

問題のGetDiskFreeSpaceExは、HSPで使われる「符号付き32bit整数」ではなくて
「符号なし64bit整数」を取得するためのものです。
符号付き32bit整数の最大値は2,147,483,647なので、
そのため、整数変数を割り当てると、2,147,483,648以上の値が
上手く取得できないのでしょう。
(なお、コード内ではGetDiskFreeSpaceExの第3パラメータに変数を割り当てていますが、
第3パラメータはディスク全体の容量を取得するためのものなので、
空き容量を取得するには第2パラメータにした方が良いと思います)

以下のコードでは64bit整数を取得するのに64bitの実数変数(倍精度浮動小数点数)を
使っていますが、実数変数の中に無理矢理64bit整数を入れているだけなので、
直接扱うことはできません。(実数と整数の仕様は全く別物)
そのため、strfを経由することで実数に変換しています。

#uselib "kernel32.dll" #func GetDiskFreeSpaceEx "GetDiskFreeSpaceExA" sptr,var,int,int //符号なし64bit整数を取得するために実数変数を用意する。(実数変数は64bit) fb=0.0 GetDiskFreeSpaceEx "c:\\",fb,0,0 //上記の方法で実数変数の中に入った64bit整数は直接使用できないので、 //以下の方法で実数に変換。 //(strfを使えば「符号なし64bit整数」を文字列に変換できることを利用) fb2=double(strf("%20I64u",fb)) mes fb2



qwerty

リンク

2024/5/6(Mon) 22:45:03|NO.101678

沢渡さんご回答ありがとうございます。

教えてくださったコードで無事正常に動いてくれました。
ここまで協力してくださった皆様、本当にありがとうございました。

現状ver.1.10を一旦ダウンロード不可にして、ver.1.20からこの仕組みを使おうと思います。
本当にありがとうございました。



名無し

リンク

2024/5/7(Tue) 02:15:54|NO.101680

数値の32bit64bitの話は解決したみたいなので自分宛てのものだけ。

>「・個人、法人問わず無料でご利用いただけます」に変更しました。
> このような形で大丈夫でしょうか?
大丈夫だと思います。
別に自分もこういったことに詳しい訳ではなく、
「ただ記載に違和感があった」くらいの話なのであしからず。



qwerty

リンク

2024/5/7(Tue) 11:01:36|NO.101684

名無しさんご返信ありがとうございます。

内容のご確認ありがとうございました。



記事削除

記事NO.パスワード
(質問が解決したスレッドは他の利用者に活用してもらうため、削除しないようお願いします)

NO.101667への返信

マスコット

好きなマスコットを選んでください。

名前

e-mail
HOME
  1. 初めて利用する方は、HSP3掲示板の使い方をお読みください。
  2. 不要部分の多い長いスクリプトの投稿は ご遠慮ください。
  3. 書き込みは自動改行されません。適度に改行を入れてください。
  4. スクリプトは小文字の<pre>〜</pre>で囲むと見やすく表示できます。

削除用パスワード

エラー発生時、再送信すると二重送信になることがあります。
回答が得られたら、お礼書き込み時に[解決]チェックしてください。
SPAM防止のためURLから始まる文章は投稿できません。
SPAM防止のため英文字のみの本文を投稿することはできません。

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