[轉]NSIS:使用SectionSetFlags根據不同環境自動勾選特定區段

來源:互聯網
上載者:User

標籤:

轉自: http://www.flighty.cn/html/bushu/20140526_232.html 在微軟SQL2000+SP4整合安裝版安裝包中可以根據目標作業系統自動勾選對應的版本,有同學問我這個功能是如何?的,今天輕狂寫一個短文統一回複一下。 重點就是使用了SectionSetFlags指令,以下是NSIS 使用者手冊中的說明: 設定區段標記。標記為 32 位整數。第一位(低位)代表該區段當前是否選中,第二位代表該區段是否是一個區段組 (請不要修改這裡除非你真的很瞭解), 第三位代表該區段是否是一個區段組的結尾 (同樣,請不要修改),第四位代表該區段文字是否描黑顯示,第五位代表該區段是否是唯讀,第六位代表區段組是否自動延伸,第七位代表區段組是部分選定的,第八位是部分選定區段組切換內部使用,第九位是用來反映區段名稱更改。如果指定了超出範圍的區段則會放置一個錯誤的標記。每個標記名稱都以 `SF_` 開頭: !define SF_SELECTED   1!define SF_SECGRP     2!define SF_SECGRPEND  4!define SF_BOLD       8!define SF_RO         16!define SF_EXPAND     32!define SF_PSELECTED  64 我們只用第一位即可。 下面是完整指令碼:
;少輕狂www.nsisfans.comName "根據不同環境自動勾選特定區段"OutFile "根據不同環境自動勾選特定區段.exe"!include "MUI2.nsh"!include "WinVer.nsh"!insertmacro MUI_PAGE_COMPONENTS!insertmacro MUI_PAGE_INSTFILES!insertmacro MUI_LANGUAGE "SimpChinese"InstallDir "$TEMP"Section /o "SQL2000開發版" SEC01  SectionIn RO  MessageBox MB_OK|MB_ICONEXCLAMATION ‘開發版!‘SectionEndSection /o "SQL2000企業版" SEC02  SectionIn RO  MessageBox MB_OK|MB_ICONEXCLAMATION ‘企業版!‘SectionEndFunction .onInit${If} ${IsServerOS}  SectionGetFlags ${SEC02} $R0  IntOp $0 $R0 | ${SF_SELECTED}  SectionSetFlags ${SEC02} $0${Else}  SectionGetFlags ${SEC01} $R0  IntOp $0 $R0 | ${SF_SELECTED}  SectionSetFlags ${SEC01} $0${EndIf}FunctionEnd
另:在onInit當然不局限於判斷作業系統,而是可以根據指定的特徵,比如判斷註冊表索引值或者某檔案是否存在等。輕狂在這裡只是提一個思路,具體就看大家怎麼發揮了。

 

輕狂志(少輕狂)原創文章,轉載請註明作者和出處,謝謝!http://www.flighty.cn/html/bushu/20140526_232.html

[轉]NSIS:使用SectionSetFlags根據不同環境自動勾選特定區段

相關文章

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.