-
Notifications
You must be signed in to change notification settings - Fork 634
Allow specifying custom appcast URL 允許指定自訂更新渠道 #1724
New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
base: master
Are you sure you want to change the base?
Conversation
|
隐约记得install.nsi中有备份shared data的操作,是不是那个部分的代码之前什么时候改坏了?修了就行? |
|
@fxliang 這個 PR 在本質上與備份 shared data 無關。 所以用户裝了我們的安裝包,不論有否備份 shared data,只要用户以 https://github.com/rime/weasel/releases 的安裝包進行更新,用户先前安裝我們安裝包的碼表就會被你們的覆蓋,造成用户意料之外的行為。 |
|
解决方案不是应该将客制的方案集,放user data dir里来解决吗? 如果发版已经独立,可以修改rc文件中的数据就行 |
|
不是,因為 user data 永遠會優先於 shared data,用户一旦放 rime-cantonese 碼表到 user data 裏,安裝包的任何更新就不會奏效。 |
|
改註冊表有危險吧。 |
更新的版本應該沒有打包粵語輸入方案呢,怎麼會覆蓋的? 原則上配方包的設計應該兼容其他方案,以適應用家添加其他輸入方案的需求。 假如做得無法兼容了,只能用特定方案,那就需要另起一個發行版,用獨立的更新渠道。 |
|
我记得,方案有plum可以更新吧@lotem |
|
plum 只是一個協助更新 user data folder 的工具。當然也可以透過指定 附帶一提,Squirrel 的更新渠道 URL 放在程式套件(實質上就是資料夾)內的 Info.plist 檔案,因此既輕易修改又無保安問題: 另外,我們還有一個目標,就是當 rime-cantonese 有較大規模詞表更新時能夠立即通知用户更新。這也是我們希望能自訂更新渠道的原因之一。 |
|
現時我們發佈的是一個「半獨立發行版」,安裝包裏面除了 shared data 資料夾並沒有作任何更動,而我們並不希望更改任何安裝包裏面的可執行檔案(WeaselDeployer.exe、WeaselSetup.exe、WeaselSetup.exe 以及兩個 .dll)。這個 PR 的目的就是 我們固然可以重新編譯(甚或乎直接 sed)WeaselServer.exe 來修改更新頻道,但我們並不希望這樣做,因為這代表着用户安裝到程式資料夾的並非官方執行檔,而且執行檔的 hash 不同會導致防毒軟件識別成兩個不同的執行檔,次要原因是重新編譯會導致 CI 變得難以維護。 |
|
我現在還沒搞明白問題出在哪裏呢,也沒有跟進 rime-cantonese 的開發。 按照我的理解,rime-cantonese 打包的安裝程序就是小狼毫+定製的 appdata。我認爲這是一個方便用戶一次安裝完所需輸入法程序+方案的舉措。Rime 官網的版本與此類似,附帶的方案也是爲了優化開箱即用體驗和用戶安裝的成功率。 那麼從官網更新小狼毫主程序,這一步怎麼會覆蓋掉額外安裝的輸入方案呢? 在輸入法程序能夠兼容的情況下,從官網更新輸入法程序是推薦的做法呀。 |
我目前理解的是rime-cantonese的方案会滚动更新并打包到rime-cantonese打包发行的小狼毫的shared data中,想通过appcast来从实现方案集的更新的样子。 我没有深入对比过,不是太确认更新安装是不是会用新安装包的文件来覆盖旧的shared data, 毕竟覆盖安装的时候似乎会备份一次旧的shared data安装完之后恢复的样子,这样是不是会用旧的shared data 来覆盖新的数据? 从需求的本质来看,目标是可以自动提示更新rime-cantonese的方案集,但是这个需求要从主程序更新来实现就有点扩大影响了 |
|
那太浪費了吧。 更新配方就可以啦。看來得加快研發新的配方管理器。 |
新的數據會覆蓋舊的 shared data。新數據檔案與舊數據同名,則新數據優先;若果新數據中沒有同名檔案,則舊數據得以保留。 更新方案不是主要目標,因此我才説是「還有一個目標」,實際上可以預計 rime-cantonese 短期內都不會有大更新,所以還是以你們對程式的更新為主。 |
為方便用户能一鍵安裝輸入粵語,我們(維護 rime-cantonese 的 CanCLID)從 2021 年開始已經會定期打包包含 rime-cantonese 及其依賴方案的安裝包。
但由於 appcast 頻道 hard code 成 http://rime.github.io/release/weasel/appcast.xml (或 http://rime.github.io/testing/weasel/appcast.xml ),現在用户透過 WinSparkle 更新程式時,仍會安裝 https://github.com/rime/weasel/releases 中的版本,導致「程序文件夾」中的方案被覆蓋,方案變化導致許多用户曾經投訴更新後不能正常使用。
此 PR 允許從登錄檔(註冊表)指定更新渠道,這樣就能從
install.nsi指定 URL,不需重新編譯整個程式。