通过Eclipse自定义单选按钮INI页面

时间:2009-08-03 17:03:25

标签: eclipse custom-controls nsis

2 个答案:

答案 0 :(得分:0)

您可以先创建一个Var IsEnterprise或类似的全局变量。

要使实际页面正常工作,您可以在现有MUI_PAGE宏之间的某处插入页面命令

page EnterprisePageCreate EnterprisePageLeave

EnterprisePageCreate和EnterprisePageLeave应该是nsis函数,create函数应该创建页面,leave函数应该从单选按钮获取状态并将其保存在全局$ IsEnterprise中(你可以在下面找到有关如何执行此操作的信息) InstallOptions自述文件和示例)

稍后您可以在一个部分中使用$ IsEnterprise。

但是既然你已经有一个名为Enterprise的部分,我会假设您只想切换这一部分。如果是这种情况,则无需在var中保存状态,您可以使用EnterprisePageLeave函数中的sections.nsh中的宏切换“复选框”部分。

您还提到要跳转到InstFiles页面,查看您发布的脚本,我只是将自定义页面放在组件页面之前,当Enterprise无线电打开时,打开该部分,否则,转动它关闭并使其只读。


在一个不相关的说明中,仅当使用RequestExecutionLevel admin时,UAC关闭或< Vista,你需要使用UserInfo插件来检测用户是否是管理员。

答案 1 :(得分:0)

结束使用nsDialogs。没有GUI,但从设计的角度看更多的控制。

让单选按钮页面工作正常,但在安装程序运行时它会显示带有“许可协议”子标题的自定义页面。

NSI代码:

  

名称“BlackBerry Desktop”

     

RequestExecutionLevel admin

     

一般符号定义
  !定义VERSION 5.0.0.11
  !定义公司RIM
  !定义网址http://www.blackberry.com

     

MUI符号定义
  !定义MUI_ICON Blackberry.ico
  !定义MUI_LICENSEPAGE_RADIOBUTTONS

     

包含的文件
  !包括Sections.nsh
  !包括MUI2.nsh
  !包括nsDialogs.nsh
  !包括LogicLib.nsh

     

变量   Var / GLOBAL帐户类型
  Var InstallerSelect
  Var标签
  Var Label_2
  Var Label_3
  Var RadioButton_1
  Var RadioButton_2
  Var / GLOBAL RadioButton_1_State
  Var / GLOBAL RadioButton_2_State

     

保留档案
  ReserveFile“$ {NSISDIR} \ Plugins \ AdvSplash.dll”

     

安装程序页面
  !insertmacro MUI_PAGE_WELCOME
  !insertmacro MUI_PAGE_LICENSE license.txt
  ; Page Custom InstallerSelect InstallerSelectLeave
  PageEx custom       PageCallbacks InstallerSelect InstallerSelectLeave
      标题“”
  PageExEnd
  !insertmacro MUI_PAGE_INSTFILES
  !insertmacro MUI_PAGE_FINISH
   安装人员语言
  !insertmacro MUI_LANGUAGE英语

     

安装程序属性
  OutFile“RIM_BlackBerry_Desktop_5.0.exe”
  InstallDir“$ TEMP \ RIM BlackBerry Desktop 5.0安装文件”
  CRCCheck on   XPStyle上   ShowInstDetails隐藏
  VIProductVersion 5.0.0.11
  VIAddVersionKey / LANG = $ {LANG_ENGLISH}
  ProductName“BlackBerry Desktop”
  VIAddVersionKey / LANG = $ {LANG_ENGLISH}
  ProductVersion“$ {VERSION}”
  VIAddVersionKey / LANG = $ {LANG_ENGLISH}
  公司名称“$ {COMPANY}”
  VIAddVersionKey / LANG = $ {LANG_ENGLISH}
  公司网站“$ {URL}”
  VIAddVersionKey / LANG = $ {LANG_ENGLISH}
  FileVersion“$ {VERSION}”
  VIAddVersionKey / LANG = $ {LANG_ENGLISH}
  FileDescription“”VIAddVersionKey
  / LANG = $ {LANG_ENGLISH} LegalCopyright“”

     

;检查管理员功能
  功能CheckAdmin
  ;检查当前用户是否具有管理员权限
      userInfo :: getAccountType
      pop $ AccountType
      strCmp $ AccountType“Admin”+3
      messageBox MB_OK“您没有管理员权限。$ \ n $ \ n安装已取消”
      退出
      返回
  功能结束

     

;选择安装类型页面功能
  功能安装程序选择
          nsDialogs :: create 1018
          Pop $ InstallerSelect

    ${If} $InstallerSelect == error <br>
            Abort <br>
    ${EndIf} <br>

    ${NSD_CreateLabel} 0 0 100% 12u "Please select an installation type..." <br>
    Pop $Label <br>

    ${NSD_CreateLabel} 10% 30% 90% 20 "For users who are NOT on the Enterprise (Exchange) server" <br>
    Pop $Label_2 <br>

    ${NSD_CreateLabel} 10% 70% 90% 20 "For users who are on the Enterprise (Exchange) server" <br>
    Pop $Label_3         <br>

    ${NSD_CreateRadioButton} 5% 20% 100% 20 "Internet" <br>
    Pop $RadioButton_1 <br>

    ${NSD_CreateRadioButton} 5% 60% 100% 20 "Enterprise" <br>
    Pop $RadioButton_2 <br>

    ${If} $RadioButton_1_State == ${BST_CHECKED} <br>
            ${NSD_Check} $RadioButton_1 <br>
    ${EndIf}  <br>

    ${If} $RadioButton_2_State == ${BST_CHECKED} <br>
            ${NSD_Check} $RadioButton_2 <br>
    ${EndIf} <br>

    nsDialogs::Show  <br>
     

功能结束

     

功能InstallerSelectLeave
          $ {NSD_GetState} $ RadioButton_1 $ RadioButton_1_State
          $ {NSD_GetState} $ RadioButton_2 $ RadioButton_2_State
  功能结束

     

安装程序部分

     

部分 - 主要SEC0000
      致电CheckAdmin

SetOutPath $INSTDIR\BB_MS
SetOverwrite ifdiff
File /r BB_MS\*
SetOutPath $INSTDIR\Drivers
SetOverwrite ifdiff
File /r DRIVERS\*
SetOutPath $INSTDIR\ISSetupPrerequisites
SetOverwrite ifdiff
File /r ISSetupPrerequisites\*
SetOutPath $INSTDIR
SetOverwrite ifdiff
File "_setup.exe"
File "0x0409.ini"
File "Autorun.inf"
File "BBDMUtil.dll"
File "BlackBerry Desktop Software.msi"
File "BlackBerrySetup.exe"
File "Data1.cab"
File "FLEXnet_patch_Q113020.exe"
File "install.txt"
File "install_ENT_silent.cmd"
File "install_ENT_ui.cmd"
File "install_INT_silent.cmd"
File "install_INT_ui.cmd"
File "setup.bmp"
File "Setup_Internet.ini"
File "Setup_Enterprise.ini"
File "WindowsInstaller-KB893803-x86.exe"
     

检查选择的安装方法
      StrCmp $ RadioButton_1_State 1 Internet 0
      StrCmp $ RadioButton_2_State 1企业互联网

 Internet: <br>
Execwait 'msiexec /i "$INSTDIR\Drivers\BlackBerry USB and Modem Drivers_ENG (DM5.0b28).msi" /passive /norestart' <br>
Rename "$INSTDIR\Setup_Internet.ini" "$INSTDIR\Setup.ini" <br>
Sleep 1000 <br>
ExecWait '"$INSTDIR\BlackBerrySetup.exe" /S /v/passive' <br>
    Goto End <br>
     

企业:
      Execwait'msiexec / i“$ INSTDIR \ Drivers \ BlackBerry USB和Modem Drivers_ENG(DM5.0b28).msi”/ passive / norestart'
      重命名为“$ INSTDIR \ Setup_Enterprise.ini”“$ INSTDIR \ Setup.ini”
      睡眠1000
      ExecWait'“$ INSTDIR \ BlackBerrySetup.exe”/ S / v / passive'

     

结束:
  SectionEnd

     

安装程序功能
  功能.onInit
      InitPluginsDir
      推$ R1       文件/oname=$PLUGINSDIR\spltmp.bmp Blackberry.bmp
      advsplash :: show 1000 600 400 0x666666 $ PLUGINSDIR \ spltmp
      流行$ R1
      Pop $ R1 FunctionEnd