0

私は、Eclipse の create InstallOptions メニューを使用して、Blackberry Desktop インストーラーを再パッケージ化するためのラジオ ボタンを含むカスタム INI ページを作成しています。

各タイプには、「インターネット」と「エンタープライズ」の 2 つのセクションがあります。

ユーザーが 2 つのオプションのいずれかを選択する必要があり、その選択に応じて、ページはカスタム ページで選択された選択を引き継いで、INSTFILES ページにジャンプし、最後まで続行します。

スクリプトに INI ページをロードして (おそらく間違って検索しているのでしょう)、あるページから次のページにデータを渡す方法に関する具体的なドキュメントを見つけることができませんでした (私が推測するフィールドによると?)

どんな助けでも大歓迎です。たとえそれが私が盲目でドキュメントを読むことができないと私に言うことであっても(リンクは役に立ちますが:))

INIコードは次のとおりです。


; EclipseNSIS InstallOptions Script Wizard によって自動生成され
ます。2009 年 7 月 29 日午後 5 時 42 分 56 秒

[設定]
NumFields=7
Title=RIM BlackBerry Desktop 5.0 インストール
CancelEnabled=1

[フィールド 1]
Type=RadioButton
Left=15
Top=28
Right=100
Bottom=38
Text=Internet
State=
Flags=NOTIFY

[フィールド 4]
Type=RadioButton
Left=15
Top=95
Right=100
Bottom=105
Text=Enterprise
Flags=NOTIFY

[フィールド 2]
Type=GroupBox
Left=0
Top=10
Right=300
Bottom=75
Text=

[フィールド 5]
Type=Label
Left=30
Top=42
Right=235
Bottom=52
Text=エンタープライズ (Exchange) サーバーにいないユーザーの場合

[フィールド 6]
Type=Label
Left=30
Top=111
Right=235
Bottom=121
Text=Exchange サーバーを使用している場合のみ選択してください

[フィールド 3]
Type=GroupBox
Left=0
Top=75
Right=300
Bottom=140

[フィールド 7]
Type=Label
Left=0
Top=0
Right=130
Bottom=10
Text=インストール方法を選択してください


...そして、NSI コードは次のとおりです。


EclipseNSIS Script Wizard による自動生成
2009 年 7 月 29 日 5:42:16 PM

名前「ブラックベリー デスクトップ」

RequestExecutionLevel 管理者

一般的な記号の定義
!define VERSION 5.0.0.11
!define COMPANY RIM
!define URL http://www.blackberry.com

MUI シンボルの定義
!define MUI_ICON BBD.ico
!define MUI_LICENSEPAGE_RADIOBUTTONS

含まれるファイル
!include Sections.nsh
!include MUI2.nsh

予約ファイル
ReserveFile "${NSISDIR}\Plugins\AdvSplash.dll"

インストーラーページ
!insertmacro MUI_PAGE_WELCOME
!insertmacro MUI_PAGE_LICENSE license.txt
!insertmacro MUI_PAGE_COMPONENTS
!insertmacro MUI_PAGE_INSTFILES
!insertmacro MUI_PAGE_FINISH
インストーラー言語
!insertmacro MUI_LANGUAGE English

インストーラー属性
OutFile RIM_BlackBerry_Desktop_5.0.exe
InstallDir "$TEMP\RIM BlackBerry Desktop 5.0 Setup Files"
CRCCheck on
XPStyle on
ShowInstDetails hide
VIProductVersion 5.0.0.11
VIAddVersionKey /LANG=${LANG_ENGLISH} ProductName "BlackBerry Desktop"
VIAddVersionKey /LANG=${LANG_ENGLISH } ProductVersion "${VERSION}"
VIAddVersionKey /LANG=${LANG_ENGLISH} CompanyName "${COMPANY}"
VIAddVersionKey /LANG=${LANG_ENGLISH} CompanyWebsite "${URL}"
VIAddVersionKey /LANG=${LANG_ENGLISH} FileVersion "${ VERSION}"
VIAddVersionKey /LANG=${LANG_ENGLISH} FileDescription ""
VIAddVersionKey /LANG=${LANG_ENGLISH} LegalCopyright ""

インストーラ セクション
セクション /o メイン SEC0000
SetOutPath $INSTDIR
SetOverwrite ifdiff
; テスト段階セクション
終わり

SectionGroup /e "BlackBerry Desktop セクション"
セクション /o インターネット SEC0001
SetOutPath $INSTDIR\DRIVERS
SetOverwrite ifdiff
; Execwait 'msiexec /i "$INSTDIR\BlackBerry USB and Modem Drivers_ENG (DM5.0b28).msi" /passive'
SetOutPath $INSTDIR
SetOverwrite ifdiff
; ファイル /r *
; ExecWait '"$INSTDIR\Setup.exe" /S/v/qb!'
セクション終了

セクション /o エンタープライズ SEC0002
SetOutPath $INSTDIR\DRIVERS
SetOverwrite ifdiff
; Execwait 'msiexec /i "$INSTDIR\BlackBerry USB and Modem Drivers_ENG (DM5.0b28).msi" /passive'
SetOutPath $INSTDIR
SetOverwrite ifdiff
; ファイル /r *
; /REBOOTOK "$INSTDIR\Setup.ini" を削除し
ます。/REBOOTOK "$INSTDIR\Setup_Enterprise.ini" "$INSTDIR\Setup.ini"の名前を変更し
ます。ExecWait '"$INSTDIR\Setup.exe" /S/v/qb!'
SectionEnd
SectionGroupEnd

セクションの説明
!insertmacro MUI_FUNCTION_DESCRIPTION_BEGIN
!insertmacro MUI_DESCRIPTION_TEXT ${SEC0000} $(SEC0000_DESC)
!insertmacro MUI_DESCRIPTION_TEXT ${SEC0001} $(SEC0001_DESC)
!insertmacro MUI_FUNCTION_DESCRIPTION_END

インストーラ言語文字
列 TODO 言語文字列を適切な翻訳で更新します。

LangString SEC0000_DESC ${LANG_ENGLISH} "Exchange/Enterprise BlackBerry 以外のユーザー向けのインストール"
LangString SEC0001_DESC ${LANG_ENGLISH} "Exchange/Enterprise BlackBerry ユーザー向けのインストール"

4

2 に答える 2

0

nsDialogsを使用して終了しました。GUI はありませんが、デザインの観点からより多くの制御ができるようです。

インストーラーの実行時に「ライセンス契約」のサブキャプションを含むカスタム ページが表示されることを除いて、ラジオボタン ページが正常に動作するようになりました。

NSIコード:

名前「ブラックベリー デスクトップ」

RequestExecutionLevel 管理者

一般的な記号の定義
!define VERSION 5.0.0.11
!define COMPANY RIM
!define URL http://www.blackberry.com

MUI シンボルの定義
!define MUI_ICON Blackberry.ico
!define MUI_LICENSEPAGE_RADIOBUTTONS

含まれるファイル
!include Sections.nsh
!include MUI2.nsh
!include nsDialogs.nsh
!include LogicLib.nsh

変数 Var /GLOBAL AccountType
Var InstallerSelect
Var Label
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
Caption " "
PageExEnd
!insertmacro MUI_PAGE_INSTFILES
!insertmacro MUI_PAGE_FINISH
インストーラー言語
!insertmacro MUI_LANGUAGE English

インストーラー属性
OutFile "RIM_BlackBerry_Desktop_5.0.exe"
InstallDir "$TEMP\RIM BlackBerry Desktop 5.0 Setup Files"
CRCCheck on
XPStyle on
ShowInstDetails hide
VIProductVersion 5.0.0.11
VIAddVersionKey /LANG=${LANG_ENGLISH}
ProductName "BlackBerry Desktop"
VIAddVersionKey /LANG=$ {LANG_ENGLISH}
ProductVersion "${VERSION}"
VIAddVersionKey /LANG=${LANG_ENGLISH}
CompanyName "${COMPANY}"
VIAddVersionKey /LANG=${LANG_ENGLISH} CompanyWebsite
"${URL}"
VIAddVersionKey /LANG=${LANG_ENGLISH}
FileVersion " ${バージョン}"
VIAddVersionKey /LANG=${LANG_ENGLISH}
FileDescription "" VIAddVersionKey
/LANG=${LANG_ENGLISH} LegalCopyright ""

; 管理者機能を確認
する機能 CheckAdmin
; 現在のユーザーが管理者権限を持っているか確認
userInfo::getAccountType
pop $AccountType
strCmp $AccountType "Admin" +3
messageBox MB_OK "You do not have Administrator rights.$\n$\nInstallation cancel"
Quit
return
FunctionEnd

;Select インストール タイプのページ関数
Function InstallerSelect
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
FunctionEnd

インストーラーのセクション

セクション -メイン SEC0000
Call 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 Enterprise Internet

 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>

Enterprise:
Execwait 'msiexec /i "$INSTDIR\Drivers\BlackBerry USB and Modem Drivers_ENG (DM5.0b28).msi" /passive /norestart'
Rename "$INSTDIR\Setup_Enterprise.ini" "$INSTDIR\Setup.ini"
Sleep 1000
ExecWait '"$INSTDIR\BlackBerrySetup.exe" /S /v/passive'

END:
セクション終了

インストーラ関数
Function .onInit
InitPluginsDir
Push $R1
File /oname=$PLUGINSDIR\spltmp.bmp Blackberry.bmp
advsplash::show 1000 600 400 0x666666 $PLUGINSDIR\spltmp
Pop $R1
Pop $R1 FunctionEnd

于 2009-08-04T18:54:04.663 に答える
0

Var IsEnterpriseまたはそのようなものでグローバル変数を作成することから始めることができます。

実際のページを機能させるには、既存の MUI_PAGE マクロの間にページ コマンドを挿入します。

page EnterprisePageCreate EnterprisePageLeave

EnterprisePageCreate と EnterprisePageLeave は nsis 関数である必要があり、create 関数はページを作成し、leave 関数はラジオ ボタンから状態を取得し、それをグローバル $IsEnterprise に保存する必要があります (これを行う方法については、InstallOptions の readme を参照してください)。例)

その後、セクションで $IsEnterprise を使用できます。

しかし、すでに Enterprise というセクションがあるので、このセクションを切り替えたいだけだと思います。その場合、var に状態を保存する必要はありません。EnterprisePageLeave 関数の section.nsh のマクロを使用して、セクションの「チェックボックス」を切り替えることができます。

また、投稿したスクリプトを見て、InstFiles ページにジャンプしたいことにも言及しました。コンポーネント ページの前にカスタム ページを配置し、エンタープライズ ラジオがオンになっている場合はセクションをオンにし、それ以外の場合はオフにして作成します。読み取り専用です。


無関係なことRequestExecutionLevel adminですが、UAC がオフまたは < Vista の場合、UserInfo プラグインを使用して、ユーザーが管理者かどうかを検出する必要があります。

于 2009-08-03T18:11:10.470 に答える