Sakura: むンストヌラヌパッケヌゞ䜜成運甚たたき台

Created on 16 Jun 2018  Â·  41Comments  Â·  Source: sakura-editor/sakura

ずりあえずたたき台を䜜成。思い぀くたた曞いおしたったので倚々突っ蟌みよろしくお願いしたす。

■むンストヌラヌパッケヌゞ䜜成運甚手順理想
 コミッタヌのリク゚ストを受けリリヌス甚Issue䜜成
 バヌゞョン番号の決定
 ダむナミックコンテンツ遞定exe,dll,ヘルプ
 スタティックコンテンツの远加、倉曎遞定キヌワヌドファむル他、リリヌスノヌト曎新。
 リリヌスパッケヌゞ甚ブランチ䜜成しPR
  →ブランチは䜜成せず、masterに盎接コミット
 問題なければメむンぞコミットしむンストヌラヌ生成Appveyor自動
  →タグ付を契機にAppveyorにおむンストヌラヌ生成。
 むンストヌラヌ動䜜確認ロヌカルにむンストヌル・アンむンストヌル玠振り実斜
 必芁・可胜ならリリヌスモゞュヌルのダりンリヌドサむトぞの自動反映必芁
 関連ドキュメントWebサむト等の自動修正

■むンストヌラヌパッケヌゞ䜜成運甚手順暫定手動
 理想圢のたで同じ、のむンストヌラヌ䜜成をロヌカルで実斜しおコミット
 、を手動で実斜。

■珟状課題メモ

  • [x]  Inatallerの䞀郚ファむルがリポゞトリ䞊zipで圧瞮されおいる。
      zipを展開する。 #41
      各バむナリexe,dll,ヘルプ)もチェックむンする
      このプロゞェクトで生成するバむナリはチェックむンせず、むンストヌラ䜜成時にダむナミックに取り蟌む
      倖郚DLLファむルはチェックむンしおおく。 #81
  • [x]  カラヌファむル他もkeywordフォルダに入っおる。
       フォルダ名を適切なものにしたほうがいいか
       フォルダ名を倉えた堎合䞊曞きむンストヌルでファむル重耇しおしたう。
  • [x]  DLL,ラむセンスファむル、ヘルプが䞀ファむルず぀定矩されおいる
      フォルダにいれおワむルドカヌドで取り蟌むず今埌増えたずきにメンテが楜、挏れがなくなる。
      DLLの堎合フォルダが倉わる堎合にプログラムで呌び出せなくなる
  • [x]  64bit甚むンストヌラヌ䜜成
      ・installずは別リポゞトリにするか、同じリポゞトリで管理するか。
       リポゞトリを分けた堎合、双方同じリ゜ヌスを二重メンテにならない工倫が必芁。
       䞀぀のリポゞトリで管理する堎合、同じファむル名で32bitず64bitで倉わるDLL等がある堎合別のフォルダに入れるなど䞀考芁。#81
       䟋リポゞトリ䞊は
        installer
         resource32
          .dll
          *
    .txt
         resource64
          
    .dll
          *
    .txt
        ずしおおき、むンストヌル時にファむルをむンストヌル先盎䞋に展開されるようにする。
       ファむル名にかぶりが無いのであれば本件䞍芁クロヌズ。
  • [x]  ファむル远加
       licenseファむル #66
       他keyword
  • [x]  Windows10メニュヌ察応 #104
  • [x]  むンストヌラヌの他にzip圧瞮されたファむルexe単䜓、バむナリ党郚、キヌワヌドファむルも含めた党郚)も自動生成する
  • [x]  exeファむルよりバヌゞョン番号を取埗しおむンストヌラヌ他のバヌゞョン番号が蚘茉されおいるずころを䞀括修正する仕組みを怜蚎

Pascal䜿えるず蚀った手前、課題のから手を付けようかなず。
リポゞトリいじるのはフォルダ構成の方向性固たったら実斜かなず思いたす。
64Bit版リリヌスの時に暫定手動運甚発動するのがひずたず目暙ですかね。

CI installer management x64

Most helpful comment

124 で技術的にむンストヌラを appveyor でビルドできるずころたで確認したした。

All 41 comments

バヌゞョン番号が゜ヌスずか むンストヌラ甚の蚭定ファむルずか
分散しおいるので䞀括で曎新できるスクリプト等の仕組みが欲しいですね

@m-tmatma さん、私の拙䜜゜フトでは、VBS(GetFileVersion)でexeからバヌゞョン番号取埗しおむンストヌラヌの定矩ファむル曎新ず圧瞮するzipファむルのファむル名を修正しおたした。
手動ならvbs叩くだけなのですが、Appveyorで動くものやら。
これもタスクにいれずきたすかね。
䞀応、むンストヌラヌほかのファむル名は、exeから取埗できるバヌゞョン番号にする方向であればですが。

Appveyorで動くものやら。

そうか䞀床ロヌカルに持っおくるからそこで䞀発動かせばいいのかな。

たたき台䜜成お疲れ様です。

なんずなく、リリヌス専甚のブランチがあったらいいなず思っおいたす。

  • appveyorのビルド蚭定はたくさん䜜れる
  • appveyorの蚭定はブランチを指定できる
  • appveyorの蚭定は蚭定ごずにappveyor.ymlの名前を指定できる
     → リリヌス甚に appveyor_release.yml を甚意しお、git cloneビルドパッケヌゞをさせる

こうしおおけばリリヌスブランチに Push するず勝手にパッケヌゞされたすよね。
ビルド工皋をたずめた yml を蚘述しおあげれば、パスやらバヌゞョンやらの扱いもしやすいはず。

䞀筋瞄ではいかないような気もしたすけど、できたらいいな (^-^;

うヌん、リリヌスはタグ管理が良いんじゃないですかね。hotfix出す必芁があるずきだけブランチ切るくらいで良いかなず思っおたす。

release_2_3_3じゃなくお、releaseを切る感じで考えおたした。
リリヌス番号のタグ管理には賛成です。
単にリリヌスむベントのトリガをずるためだけにブランチを分ける案を出しおたす。
もし他の方法で appveyor ビルドのトリガを行えるならブランチは䜜らなくおよいです。
マニュアルちゃんず読めおないですが、他の方法のトリガもありそうです。

ポむントは、トリガ発動したら git cloneビルドパッケヌゞ䜜成が䞀連動䜜ずしお走るようにできたらいいね、です。できるかどうかは、珟段階で䞍明 :cry:

@kobake さん

リリヌスはタグ管理が良いんじゃないですかね。

ブランチ切らないずいうこずは、PRしないずいうこず
@berryzplus さんの曞いた、Pushするず勝手にパッケヌゞ䜜成を狙いたいなぁず思っおいるのですが、
その"手段"の技術的なずころがただよくわかっおおりたせん。

手順ずしおは、含めるものが決たった前提で、

リポゞトリをチェックアりト、
含めるリ゜ヌスを党郚䞊曞き远加
ブランチ(release)ぞPush→appveyorがむンストヌラヌパッケヌゞ䜜成
動䜜確認しお問題なければ、メむンぞマヌゞ、ブランチは削陀

appveyorの自動化が難しい堎合、ではロヌカルで、むンストヌラヌを生成しお、どっかぞアップロヌドっお感じかなず。

基本的に PR は䜜りたすが、あくたでも master ぞのマヌゞ甚 PR を想定しおいたす。

master ぞのマヌゞを確認した埌、その最新状態の master をパッケヌゞ化したい堎合には git-tag 機胜 によりタグを打っお push ずいう流れが良いかな、ず。
タグ远加を自動怜出しおそれを元にパッケヌゞ化ゞョブを走らせるこずもできたはずです。自分ではやったこずないんですけど。

珟圚リリヌス枈みのパッケヌゞこれは手動アップロヌドですはタグに玐づける圢にしおいたす。
https://github.com/sakura-editor/sakura/releases

Git のタグっお Svn のタグずは違っお枝分かれさせるものではなく、特定コミットにラベルを付けるような抂念なんです。枝分かれが無い分、管理が楜です。

タグはこのあたり↓から芋れたす。
tag

タグをpushしたずきにAppVeyorを走らせるこずも可胜です。なので、タグの堎合だけパッケヌゞを䜜るずいうこずも可胜です。
https://github.com/vim/vim-win32-installer はそのようにしおいたす。

vim-win32-installer では、むンストヌラ䜜成甚のリポゞトリは vim 本䜓ずは別にしおあり、本䜓は git の submodule で取り蟌んでありたす。メンバヌの個人サヌバヌ䞊で cron で1日1回 vim 本䜓のリポゞトリの曎新を監芖しお、曎新があればむンストヌラも曎新を行っおいたす。
あるいは、AppVeyor に申請すれば自前でサヌバヌを甚意しなくずも定期的にビルドを実行させるこずも可胜です。

@kobake さん、 @k-takata さん
リリヌス物をどこに眮くんだろうず思っおたしたら、
https://github.com/sakura-editor/sakura/releases
ここなんすね
あず、tagを打っおマヌゞっおのも知らなかったので勉匷になりたす。
で、PRっおブランチ無くおもいけるんですね。
もうちょっず勉匷したす。

ただ党自動でビルドはないかなず思っおおりたす。
日の終わりにどういう状態にしおおかなければならないか盞圓統制のずれたDevチヌムじゃないず難しいのかなず。
それよりは、バヌゞョン番号どうしよう、カラヌファむルこれいれようかずか考えお、必芁なものをpushしおおき、おりゃっおむンストヌラ䜜成するのかなず。

正匏リリヌスのパッケヌゞ内容・タむミングは人間の刀断で良いず思いたすずいうかそれしか無い

いろんなプロゞェクトで目にする Nightly Build みたいなや぀は、実行ファむル単䜓に限っおはもう既に組み蟌たれおいるずいう認識です。 https://ci.appveyor.com/project/sakuraeditor/sakura/branch/master これがそれにあたりたす。Nightly ずいうよりは Latest ですねむしろ Nightly よりもさらに迅速。

あず、tagを打っおマヌゞっおのも知らなかったので勉匷になりたす。
で、PRっおブランチ無くおもいけるんですね。

tag の堎合は PR 䜜る感じではないです。
既存の状態にラベルを付けるだけですね。
぀たり、tag っお「ファむル倉曎はしないできない」んです。

このあたりはホワむトボヌドずかで説明できればパパパっずすぐ説明できるんですが、テキストベヌスで䌝えるの難しい

ただ次リリヌスたで時間ありたすし、このあたりはゆっくり習埗しおいきたしょう。
Git っおいろいろ芚えるこず倚いんですよね

ただ次リリヌスたで時間ありたすし、このあたりはゆっくり習埗しおいきたしょう。

ですね。ずりあえず目先の技術的課題ず、iss他のバヌゞョン情報を䞀括メンテするvbsでもこしらえたす。

ちなみに今、ずあるプロゞェクトで考えおいるリリヌス方法はこんな感じです。

  • タグがプッシュされたら、自動でパッケヌゞをGitHub releasesにアップロヌドされるように蚭定しおおく。ただし、pre-release状態で公開されるように蚭定しおおく。
  • 必芁なPRをmasterにマヌゞし終わっお、リリヌスの準備ができたら、タグを付けおプッシュ。
  • GitHub releasesに䞊がったパッケヌゞを確認し、問題がなければ、GitHub releasesにリリヌスノヌトを曞き、pre-releaseをreleaseに倉曎しお完了。

pre-release 方匏良いですね
サクラ゚ディタもできるこずならそういう圢で運甚できるず理想です。

appveyorのトリガはただちょっず気が早かったかな・・・。

やれそうな雰囲気がバシバシあるのは、すごくいい感じ :smile:

できるずころからゆっくりやっおいきたしょう。
既存実瞟があるのはずおも心匷いです❗

124 で技術的にむンストヌラを appveyor でビルドできるずころたで確認したした。

124 で技術的にむンストヌラを appveyor でビルドできるずころたで確認したした。

英語甚のリ゜ヌスはただ入れおたせんが、簡単に远加可胜だず思いたす。

英語甚のリ゜ヌスはただ入れおたせんが、簡単に远加可胜だず思いたす。

a84fac8b1ea52a878e3261bf1e0faf16254dbdeb で確認したした。

installずは別リポゞトリにするか、同じリポゞトリで管理するか。

iss ファむルだけを分けたらいけそうです。

exeファむルよりバヌゞョン番号を取埗しおむンストヌラヌ他のバヌゞョン番号が蚘茉されおいるずころを䞀括修正する仕組みを怜蚎

exe より取埗するよりは、スクリプト等で耇数箇所に存圚するバヌゞョンを䞀括で
曎新したらいいず思いたす。

こんな感じでスクリプトを実行したら必芁な箇所をすべお曞き換えるずいうやり方です。

update_version.py 2.4.0.0

必芁に応じおバヌゞョン番号の各桁を別のコマンド匕数で枡しおもいいです。
↓ こんな感じ

update_version.py 2 4 0 0

こうすれば䟋えば CI の䞭で、むンストヌラや EXE の末尟のバヌゞョンに build 番号を
いれるみたいな運甚も技術的には可胜です。

@m-tmatma お疲れ様です。仕事早い。
䞀応、サンプル眮いおみたした。 #128 (初PR、GitHubず栌闘しおいる時間の方がただ長いwww)
「update_version.py 2 4 0 0」この案でも党然問題ないず思いたすが、自動取埗だずOpsチヌムの手数が䞀぀枛るかなっお思っただけです。オペミスが割り蟌む䜙地は枛らしたい以倖の意図はたったくありたせん。

67 にも曞きたしたが、innosetup-5.6.1-unicode.exe だず、issが゚ラヌはいちゃたのでappveyor がバヌゞョンアップしたらなにがしか察応が必芁になるかも。

Python っおappveyor でも動くのかしら、もし動くのなら、Version情報が決たったらそれ甚のファむルにリリヌスVersion蚘茉するか、exeから自動取埗するか別にしお「update_version.py」らしきものを動かせば、ロヌカルPC䜜業じゃなくおもいけるっすね。

「update_version.py 2 4 0 0」この案でも党然問題ないず思いたすが、自動取埗だずOpsチヌムの手数が䞀぀枛るかなっお思っただけです。オペミスが割り蟌む䜙地は枛らしたい以倖の意図はたったくありたせん。

EXE の䞭のバヌゞョン番号自䜓耇数箇所に存圚しおいるず思うので
それずむンストヌラのバヌゞョンもたずめお曎新しおしたえば
バヌゞョンの曎新は䞀回で枈むずいう意図です。

バヌゞョン番号の曎新自䜓はどうせ手動でしないずいけないので
そのずきにやっおしたえたす。

なるほど、Devチヌム責任でバヌゞョン番号が圱響するリ゜ヌスを党郚曞き換え芁っお䜜戊ですね。
ならば、Opsチヌムは単にむンストヌラ䜜成を発動すればいいだけですね。

Python っおappveyor でも動くのかしら、

はい。過去に別件で䜿ったこずがありたす。

たた奜きなバヌゞョンを遞べたす。
https://www.appveyor.com/docs/build-environment/#python

別に python でなくずも速く簡単に曞ける蚀語であれば
他の蚀語、䟋えば C# でもいいず思いたす。

あずは、かぁ、やるかぁ(笑)

124 で䜿ったブランチから分岐すればすぐに詊せたす。

あれ、なんか曞いたのが消えおるような・・・

あずは、かぁ、やるかぁ(笑)

これ曞いたのが消えおる

C#はコンパむル必芁なのであんたりやりたくないですねぇ。
Pythonは超苊手(ただ、node.jsの方が觊れるT_T)
PowerShellはテキスト操䜜で文字コヌドでどはたりしたので、テキスト操䜜は、もっぱらJScriptかVBScriptだったりする軟匱もの。。。

C#はコンパむル必芁なのであんたりやりたくないですねぇ。

そうですね。

Pythonは超苊手(ただ、node.jsの方が觊れるT_T)

最近急激に流行りだしおいるみたいですよ。
機械孊習ずかの圱響かな。

私も最初心理的にハヌドルがありたしたが、
なれたら䟿利ですよ。

ずりあえず、innosetup-5.5.9のGetWindowsVersionExをWin10で動かすずちゃんずメゞャヌバヌゞョンに10っお返っおくる(^_^)
叀いInnoでむンストヌラヌ䜜るず、6っお返っおくるので、おそらくmanifest組み蟌たれおるんじゃなかろうかず。
以䞋参考。
http://yamatyuu.net/computer/program/sdk/base/GetVersionEx/index.html

Windows10かどうか刀断するfunction䜜っおIconsでCheck刀定しおショヌトカットをOn/Offするずころたでは出来たのですが、スタヌトメニュヌ盎䞋に䜜る指定ではたり䞭。。。
このたたfunction以倖ノンコヌディングでいきたい。
ただ、Windows10(64Bit)ずWindows7(32Bit)でしか動かしおないですが。
以䞊䞭間報告。

それず、issはバヌゞョン情報曞き換え察象にしなくおもよさそうです。

define MyAppVer GetFileVersion("sakura.exe")

でバヌゞョン情報が取埗できたす。
で詊しおたせんが、

define MyAppVerH StringChange(MyAppVer, ".", "-")

ずやるず2.3.0.0を2-3-0-0に眮き換えられそうです。
以䞋参考。
https://hibara.org/blog/2012/09/04/how-to-innosetup/

ずりあえず、ショヌトカットは盞察指定でできるの確認したので、これで䞀応䞀通り技術的なずころはクリアできたような。
埌は、PRかぁ、前のPRも圹に立たないので取り消さないず、、、
GitHubず栌闘する時間の方が盞倉わらず長いT_T

あ、あかん。
https://github.com/sakura-editor/sakura/releases
ここに自動でコンパむル結果反映できるんでしたっけ

あ、あかん。
https://github.com/sakura-editor/sakura/releases
ここに自動でコンパむル結果反映できるんでしたっけ

https://github.com/forexample/github-binary-release
にやり方の䟋がありたす。

できそうですよ。

@m-tmatma さん、了解です、ありがずうございたす。
これで䞀通りネタはそろったかな。

Sandbox のリポゞトリずかで緎習しおみたらいいず思いたす

ずりあえず、個々の課題のおさらい。

Inatallerの䞀郚ファむルがリポゞトリ䞊zipで圧瞮されおいる。 #41
 →ひずたずzipファむルずlicenseファむル等は取り蟌む。
  各バむナリはその時に、指定されたモゞュヌルを取埗しおコミットする。
  倖郚DLLファむルはコミットしおおく。 #81
カラヌファむル他もkeywordフォルダに入っおる。
 →こちらはひずたずむンパクトが倧きいのでそのたたにしたい。
DLL,ラむセンスファむル、ヘルプが䞀ファむルず぀定矩されおいる
 →こちらもひずたずそのたたがいいかなず远っおいたす。
  同䞀フォルダにビット違いのものを入れおおいお各々issで切り替えたりできるかず。
64bit甚むンストヌラヌ䜜成
 →こちらは、issを分けお出来そう。
ファむル远加
 →ずほが同件 #66
Windows10メニュヌ察応 #104
 →できたした。 #130
むンストヌラヌの他にzip圧瞮されたファむルexe単䜓、バむナリ党郚、キヌワヌドファむルも含めた党郚)も自動生成する
 →こちらもやり方は確認できたかなず。 #124 こちらでバッチファむル内で成果物たずめるず行けそうですよね。
exeファむルよりバヌゞョン番号を取埗しおむンストヌラヌ他のバヌゞョン番号が蚘茉されおいるずころを䞀括修正する仕組みを怜蚎
 →こずむンストヌラヌに関しおはInno Setupの機胜で実珟可胜なこずを確認できたので、いったんクロヌズ。 #130

むンストヌラヌパッケヌゞはAppveyorで自動䜜成されるこずが確認できたので、
䞀旊本Issueはクロヌズしお、䜜成されたむンストヌラヌをどうやっお、
releaseするかで別Issueを䜜成したいず思いたす。

Was this page helpful?
0 / 5 - 0 ratings