innosetup-5.6.1-unicode.exe で Unknown constant "sendto" のエラーでインストーラの作成に失敗する
innosetup-5.5.9-unicode.exe ではエラーは発生しない。
http://files.jrsoftware.org/is/5/ で innosetup-5.5.9-unicode.exe をダウンロードして回避することは可能
ただ appveyor が innosetup-5.6.1-unicode.exe にアップデートされると困るのでそれまでに解決する。
エラーメッセージ
Error on line 86 in C:\...\installer\sakura.iss: Unknown constant "sendto".
Use two consecutive "{" characters if you are trying to embed a single "{" and not a constant.
Compile aborted.
http://www.jrsoftware.org/files/is5-whatsnew.htm の 5.6.1 (2018-06-14) に以下と書いている。
The {sendto} constant has been renamed to {usersendto} and now can correctly trigger a used user areas warning. It still returns the same directory: the path to the current user's Send To folder. (There is no common Send To folder.)
{sendto} を {usersendto} に名前変更したら 5.6.1 でビルドが通ったが、
今度は 5.5.9 でビルドが通らなくなる。
仕様を変えるなら移行期間を設けてどちらでもいけるようにしないと駄目だろうと思う。
http://www.jrsoftware.org/newsgroups.php
で質問を投げることが可能みたい。
Inno Setup のソース自体は
https://github.com/jrsoftware/issrc
で管理されているぽい。
http://www.jrsoftware.org/newsgroups.php
で質問を投げることが可能みたい。
innosetup-5.5.9-unicode.exe と innosetup-5.6.1-unicode.exe の両方に対応できる方法が
あればいいのだが。
仕様を変えるなら移行期間を設けてどちらでもいけるようにしないと駄目だろうと思う。
激しく同意。過去のスクリプトが動かんくなる。。。
innosetup-5.5.9-unicode.exe と innosetup-5.6.1-unicode.exe の両方に対応できる方法が
あればいいのだが。
考えられる対策
最後の選択肢が一番いいが。
- Inno Setup に要求して、innosetup-5.6.2 で {sendto} がエラーにならないようにして、と要求する。
(innosetup-5.6.2 が出るまでは appveyor に更新しないでとお願いしておく)
もありますね。
appveyor/ci#2444 で Inno Setup version 5.6.1 にアップデートする要求が
出されていたので反対意見を書いておいた。
InnoSetup にも要求送っておいた。
http://news.jrsoftware.org/read/article.php?id=106216&group=jrsoftware.innosetup#106216
毎回 URL を調べなくていいように wiki にまとめた。
う~む。大変な感じになっていますね。お疲れ様です。
C++でいうこんな感じのことが iss でもできればよいのですが。
#if _MSC_VER > 1000
#pragma once
#endif
できるなら新旧どちらか環境向けにラッパーを用意してあげればよいはずなので。
http://www.jrsoftware.org/ispphelp/index.php?topic=predefinedvars
PREPROCVER が使えるかどうか…
こんな感じになりますかね?
#if PREPROCVER < [iss pre-proccessor 5.6.1のバージョン]
#define usersendto sendto
#endif
sendto が右クリックメニュー「送る」に表示するショートカットを入れるフォルダのことだということに今更気付いたわけですが(^-^;
PREPROCVER使えそうですが、ビット操作入りそうでつらいなぁ(というか今日はもうぼちぼち電池切れ)
PREPROCVER | int. Returns the 32-bit encoded version of ISPP. Highest byte holds the major version, lowest byte holds the build number.
http://www.jrsoftware.org/ispphelp/index.php?topic=if
でもこの仕様変更対応をゴリゴリこっちでコーディングして対応するのもなんか納得がいかない気がするのは私だけ???
http://www.jrsoftware.org/ishelp/index.php?topic=consts
usersendtoは他のuserなんたらとちがって、usersendtoしかなさそうだから、sendtoのままでもいい気がする。。。
iss ファイル側でなんとかする方法は、これから作成する iss ファイルには
対応できるのですが、過去に作ったファイルには効果ないので
Inno Setup 側または appveyor 側でなんとかしたいです。
返事返ってきた。
http://news.jrsoftware.org/read/article.php?id=106217&group=jrsoftware.innosetup#106217
Use something like
#if VER < EncodeVer(5,6,1)
#define MySendTo "{sendto}"
#else
#define MySendTo "{usersendto}"
#endif
and then {#MySendTo} in place of {sendto}/{usersendto}.
iss ファイルを変更しないで対応する方法がないか質問した。
http://news.jrsoftware.org/read/article.php?id=106218&group=jrsoftware.innosetup#106218
こんな感じになりますかね?
if PREPROCVER < [iss pre-proccessor 5.6.1のバージョン]
define usersendto sendto
endif
sendto が右クリックメニュー「送る」に表示するショートカットを入れるフォルダのことだということに今更気付いたわけですが(^-^;
これとやることは一緒ですが、
作者から提案のあった workaround を実装してみた。
3085ae3d801ee3ed83f797129169046cd88e37f2
5.5.9 と 5.6.1 で動くことを確認した。
どうしようかな、とりあえず動いたし、appveyor と InnoSetup への要求を取り下げるか?
あるいは他の人のためにあくまでも過去互換性を維持してもらうようにがんばるか?
@m-tmatma さん
能動的に動けるなら、待つよりGo.がいいと思います!
iss ファイルを変更しないで対応する方法がないか質問した。
http://news.jrsoftware.org/read/article.php?id=106218&group=jrsoftware.innosetup#106218
追加の回答が来るかしばらく待ってから考えよう。
追加の回答が来るかしばらく待ってから考えよう。
動いたことは伝えたほうがいいので、コメント書いた。
更に、過去互換性を維持するように改めて送っておいた。
http://news.jrsoftware.org/read/article.php?id=106220&group=jrsoftware.innosetup#106220
@m-tmatma さんお疲れ様です。
これ非常に参考になります。
更に、過去互換性を維持するように改めて送っておいた。
変えるつもりはなさそう。
http://news.jrsoftware.org/read/article.php?id=106221&group=jrsoftware.innosetup#106221
しゃーない。
でも言い続けることは大事です。
一応送ってみた。でも聞き入れないだろうな。
http://news.jrsoftware.org/read/article.php?id=106228&group=jrsoftware.innosetup#106228
http://www.jrsoftware.org にアクセスできない。
http://www.jrsoftware.org にアクセスできない。
https://github.com/jrsoftware/issrc によると
**NOTE** Currently the main Inno Setup web site is down. The 5.6.1 binaries can be downloaded from GitHub under releases. -
とある。
http://www.jrsoftware.org にアクセスできない。
復活したみたいだ。
http://news.jrsoftware.org/read/thread.php?group=jrsoftware.innosetup
は更新ないみたいだ。
とりあえず、こちらもクローズかな?
クローズで良いと思います。
自分のコミットで参照してることになってるのは、リベース失敗による誤りです。