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

通过Eclipse自定义单选按钮INI页面,eclipse,custom-controls,nsis,Eclipse,Custom Controls,Nsis,我正在使用Eclipse的create InstallOptions菜单创建一个自定义INI页面,其中包含用于重新打包Blackberry桌面安装程序的单选按钮 每种类型有两个部分:互联网和企业 我需要一个用户选择2个选项中的一个,根据他们的选择,页面将继续在自定义页面中选择的选项,跳转到INSTFILES页面,并继续到最后 我找不到任何关于在脚本中加载INI页面的具体文档,我可能搜索不正确,然后根据我猜的字段将数据从一个页面传递到下一个页面 感谢您的帮助。即使是为了告诉我我是盲人,无法阅读文档

我正在使用Eclipse的create InstallOptions菜单创建一个自定义INI页面,其中包含用于重新打包Blackberry桌面安装程序的单选按钮

每种类型有两个部分:互联网和企业

我需要一个用户选择2个选项中的一个,根据他们的选择,页面将继续在自定义页面中选择的选项,跳转到INSTFILES页面,并继续到最后

我找不到任何关于在脚本中加载INI页面的具体文档,我可能搜索不正确,然后根据我猜的字段将数据从一个页面传递到下一个页面

感谢您的帮助。即使是为了告诉我我是盲人,无法阅读文档,但链接会有所帮助:

以下是INI代码:

);由EclipseNSIS InstallOptions脚本向导自动生成 ; 2009年7月29日下午5:42:56

[设置] NumFields=7 Title=RIM黑莓桌面5.0安装 取消启用=1

[第1栏] 类型=单选按钮 左=15 Top=28 右=100 底部=38 文本=互联网 陈述= 标志=通知

[第4栏] 类型=单选按钮 左=15 Top=95 右=100 底部=105 文本=企业 标志=通知

[第2栏] 类型=分组框 左=0 Top=10 右=300 底部=75 正文=

[第5栏] 类型=标签 左=30 Top=42 右=235 底部=52 Text=适用于不在企业Exchange服务器上的用户

[第6栏] 类型=标签 左=30 Top=111 右=235 底部=121 Text=仅当您在Exchange服务器上时才选择此选项

[第3栏] 类型=分组框 左=0 顶部=75 右=300 底部=140

[第7栏] 类型=标签 左=0 Top=0 右=130 底部=10 Text=请选择您的安装方法

…以下是NSI代码:

由EclipseNSIS脚本向导自动生成 2009年7月29日下午5:42:16

名称黑莓桌面

RequestExecutionLevel管理员

一般符号定义 !定义版本5.0.0.11 !定义公司RIM !定义URL

MUI符号定义 !定义MUI_图标BBD.ico !定义MUI_许可证页面_单选按钮

包括的文件 !包括第3.nsh节 !包括MUI2.nsh

保留文件 ReserveFile${NSISDIR}\Plugins\AdvSplash.dll

安装程序页面 !插入宏MUI\u页面\u欢迎 !insertmacro MUI_页面_LICENSE.txt !插入宏MUI_页面_组件 !插入宏MUI_页面文件 !插入宏MUI\u页面\u完成 安装程序语言 !插入宏梅语言英语

安装程序属性 OutFile RIM_BlackBerry_Desktop_5.0.exe InstallDir$TEMP\RIM BlackBerry Desktop 5.0安装文件 CRC检查 XPStyle on 显示隐藏的详细信息 VIProductVersion 5.0.0.11 ViadVersionKey/LANG=${LANG\u ENGLISH}ProductName黑莓桌面 ViadVersionKey/LANG=${LANG_ENGLISH}ProductVersion${VERSION} VIADVersionKey/LANG=${LANG_ENGLISH}公司名称${COMPANY} ViadVersionKey/LANG=${LANG_ENGLISH}公司网站${URL} ViadVersionKey/LANG=${LANG_ENGLISH}文件版本${VERSION} ViadVersionKey/LANG=${LANG_ENGLISH}文件描述 ViadVersionKey/LANG=${LANG_ENGLISH}法律版权

安装程序部分 第/o节主SEC0000 SetOutPath$INSTDIR setifdiff ; 测试阶段 分段结束

SectionGroup/e BlackBerry桌面部分 第/o节互联网SEC001 SetOutPath$INSTDIR\DRIVERS setifdiff ; Execwait'msiexec/i$INSTDIR\BlackBerry USB和调制解调器驱动程序\u ENG DM5.0b28.msi/passive' SetOutPath$INSTDIR setifdiff ; 文件/r* ; ExecWait'$INSTDIR\Setup.exe/S/v/qb!' 分段结束

第/o节企业SEC0002 SetOutPath$INSTDIR\DRIVERS setifdiff ; Execwait'msiexec/i$INSTDIR\BlackBerry USB和调制解调器驱动程序\u ENG DM5.0b28.msi/passive' SetOutPath$INSTDIR setifdiff ; 档案室* ; 删除/重新启动$INSTDIR\Setup.ini ; 重命名/重新启动$INSTDIR\Setup\u Enterprise.ini$INSTDIR\Setup.ini ; ExecWait'$INSTDIR\Setup.exe/S/v/qb!' 分段结束 区段组结束

章节说明 !insertmacro MUI\u函数\u说明\u开始 !insertmacro MUI_DESCRIPTION_TEXT${SEC0000}$SEC0000_DESC !insertmacro MUI_DESCRIPTION_TEXT${SEC0001}$SEC0001_DESC !插入宏MUI\u函数\u说明\u结束

安装程序语言字符串 TODO使用适当的翻译更新语言字符串

LangString SEC0000_DESC${LANG_ENGLISH}安装,适用于非Exchange/Enterprise BlackBerry用户
LangString SEC0001_DESC${LANG_ENGLISH}Exchange/Enterprise BlackBerry用户的安装

您可以通过使用Var IsEnterprise或类似的内容创建全局变量开始

要使实际页面正常工作,您需要在现有MUI_页面宏之间插入一个页面命令

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

后来 r on您可以在一个部分中使用$IsEnterprise

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

您还提到要跳转到InstFiles页面,查看您发布的脚本,我会将自定义页面放在components页面之前,当Enterprise radio打开时,打开该部分,否则,将其关闭并使其为只读


另一方面,仅使用RequestExecutionLevel admin是不够的,当UAC关闭或最终使用nsDialogs。没有图形用户界面,但从设计的角度来看,似乎有更多的控制

使单选按钮页面正常工作,只是在安装程序运行时显示带有“许可协议”子选项的自定义页面

NSI代码:

名称黑莓桌面

RequestExecutionLevel管理员

一般符号定义 !定义版本5.0.0.11 !定义公司RIM !定义URL

MUI符号定义 !定义MUI_图标Blackberry.ico !定义MUI_许可证页面_单选按钮

包括的文件 !包括第3.nsh节 !包括MUI2.nsh !包括nsDialogs.nsh !包括LogicLib.nsh

变数 Var/全局帐户类型 Var安装程序选择 变量标签 变量标签2 变量标签3 无线电按钮1 无线电按钮2 Var/GLOBAL RadioButton_1_状态 Var/GLOBAL RadioButton_2_状态

保留文件 ReserveFile${NSISDIR}\Plugins\AdvSplash.dll

安装程序页面 !插入宏MUI\u页面\u欢迎 !insertmacro MUI_页面_LICENSE.txt ;页面自定义安装程序选择安装程序选择离开 PageEx定制 页面回调安装程序选择安装程序选择离开 说明文字 页码结束 !插入宏MUI_页面文件 !插入宏MUI\u页面\u完成 安装程序语言 !插入宏梅语言英语

安装程序属性 OutFile RIM_BlackBerry_Desktop_5.0.exe InstallDir$TEMP\RIM BlackBerry Desktop 5.0安装文件 CRC检查 XPStyle on 显示隐藏的详细信息 VIProductVersion 5.0.0.11 ViadVersionKey/LANG=${LANG_ENGLISH} 黑莓桌面产品名称 ViadVersionKey/LANG=${LANG_ENGLISH} ProductVersion${VERSION} ViadVersionKey/LANG=${LANG_ENGLISH} 公司名称${COMPANY} ViadVersionKey/LANG=${LANG_ENGLISH} 公司网站${URL} ViadVersionKey/LANG=${LANG_ENGLISH} 文件版本${VERSION} ViadVersionKey/LANG=${LANG_ENGLISH} 通过版本密钥的文件描述 /LANG=${LANG_ENGLISH}LegalCopyright

);检查管理功能 函数CheckAdmin ; 检查当前用户是否具有管理员权限 userInfo::getAccountType pop$AccountType strCmp$AccountType Admin+3 messageBox MB\u确定您没有管理员权限。$\n$\n安装已取消 退出 回来 功能端

);选择安装类型页面功能 函数安装程序选择 nsDialogs::创建1018 Pop$InstallerSelect

);检查选定的安装方法 StrCmp$RadioButton\u 1\u状态1互联网0 StrCmp$RadioButton\u 2\u国家1企业互联网

企业: Execwait'msiexec/i$INSTDIR\Drivers\BlackBerry USB和调制解调器驱动程序\u ENG DM5.0b28.msi/passive/norestart' 重命名$INSTDIR\Setup\u Enterprise.ini$INSTDIR\Setup.ini 睡1000 ExecWait“$INSTDIR\BlackBerrySetup.exe/S/v/passive”

完: 分段结束

安装程序功能 函数。onInit InitPluginsDir 推送$R1 文件/oname=$PLUGINSDIR\spltmp.bmp Blackberry.bmp advsplash::显示1000 600 400 0x666666$PLUGINSDIR\spltmp 流行音乐$R1 Pop$R1功能结束


我也在研究nsDialogs。与InstallOptions有点不同,但可以使用INI。我已经关闭了函数并开始工作,但是只需要它来获取GetState变量并将它们传递到我为Internet/Enterprise准备的部分。
    ${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>
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"
 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>