有點標題黨的感覺,但是我今天說的這個軟件確實很多人都用,叫做Greenshot。咨詢了它的作者,用戶量竟然過億。
先展示一下成果##
為了更方便的使用七牛雲的圖床服務,去年實現了一個開源截圖工具的插件,專門用來上傳圖片到七牛圖床。操作過程如下:
- 第一步:打開截圖工具進行截圖,然后選擇“upload to qiniu”傳送到七牛圖床服務器中。
- 第二步:接完圖后連接會生成markdown連接並且拷貝到剪貼板中,寫博客直接粘貼鏈接即可:
比手動操作方便多了。當時寫了一個帖子:
寫markdown博客如何將截圖快速上傳到圖床——記一個工具插件的實現(2017-05-31 20:23
上次使用是把插件和相關的庫文件拷貝到Greenshot的安裝目錄下面。對這些文件也做了分享,看了看百度網盤,有幾十個人下載,沒有反饋。但是手動拷貝終究還是不太方便的。
說明一下自己打包的原因##
本來想把代碼提交PL給原作者,然后放到官方安裝包中release。但原作者說此軟件用戶量大概有1個億(竟然有一個億),他說怕七牛的服務器撐不住,最后會影響其它功能,這是個開源的免費軟件,他們人力有限,所以暫時他還沒有approve。當然這個一億應該是全世界的用戶量,中國有多少他沒說,我然后在github上提交了issues給七牛SDK開發人員,但是沒有反饋。后來想想干脆自己出包算了。
DOWNLOAD##
最終出的包放在了網盤中:
鏈接: 密碼: 1749
如何使用##
- 安裝,qiniu插件是默認選中的,把exe安裝包下載下來之后,默認安裝即可。
- 配置,看之前的帖子,直接看配置這一節就可以了。這次打包加了一個Zone的配置項,例如我的Zone為華北,選擇CN_North即可。
打包過程記錄#
原作者是用powershell腳本進行打包的,一個是prebuild.ps1,另外一個是build.ps1,把這個流程弄懂后,以后可以方便的實現功能,打包分享了。
我們的目標是把qiniu的插件成功的打包到exe安裝包中,過程中的某些問題以能被解決為最終目的,有些細節弄的也不是很清楚。
prebuild##
prebuild是用來build前的准備工作的,卡住的地方在生成簽名文件的地方:
# Write the certificate to a file
[System.Convert]::FromBase64String($env:Certificate) | set-content "greenshot.pfx" -encoding byte
# Decode password to secure string
$password = ConvertTo-SecureString $env:CertificatePassword -AsPlainText -Force
# Import pfx
Import-PfxCertificate -FilePath .\Greenshot.pfx -CertStoreLocation Cert:\CurrentUser\My -Password $password`
怎么也生不成pfx文件,最后用openssl自己生成了一個,然后替換了Greenshot.pfx,也替換了相關的環境變量:
# Write the certificate to a file
[System.Convert]::FromBase64String($env:Certificate) | set-content "greenshot.pfx" -encoding byte
# Decode password to secure string
$password = ConvertTo-SecureString '123456' -AsPlainText -Force
# Import pfx
Import-PfxCertificate -FilePath .\Greenshotca.pfx -CertStoreLocation Cert:\CurrentUser\My -Password $password
期間還碰到一個命令不能被識別的問題,如下:
網上搜索了相關資料,說是powershell版本太低,在win7上把版本升到最新還是沒有解決,最后看到有人提到到win10下執行,試了一下居然成功了。
最后執行成功后會是下面這個樣子:
build##
期間也是遇到了各種問題,最后總結成三點:
編譯七牛插件###
打包的過程中Greenshot如果使用了外來程序庫的話會將其注入到插件中,所以在安裝greenshot后你會看不到qiniu.dll.這樣打包的時候也方便,只要打包插件就可以了。
簽名工具###
greenshot中的簽名工具調用過程中使用了自己定義的一個環境變量,我也就從網上下載了最新的signtool.exe。自己設置環境變量指向這個簽名工具即可。
template###
加一個新的插件進來需要更新setup.iss.template文件。把插件名字和路徑等信息加上即可。關於多過語言我只添加了英文和中文。
有關代碼可以看我的github
成功之后會生成下面的文件列表。
后續需求##
現在有些地方還是不方便,列出兩個需求:
- 並不是所有人都使用markdown語法寫博客,所以應該提供選擇,剪貼板中保存markdown鏈接還是普通的URL圖片鏈接。
- 提供截圖歷史看板功能,可以把最近的一些截圖展示出來,可以把不需要的或者截錯的圖刪掉。
目前想到這兩個。
最后,如果好用請點贊,如果有任何問題請留言,謝謝。