2017-11-21 11 views
0

私はボタンが見つかったファイルパスからランタイムが作成されるラジオボタンページでWindowsインストーラを作成しようとしています。しかし、ラジオボタンの作成にのみ最初のファイルパスが使用されます。 MessageBox行のコメントを外すと、すべてのファイルパスが表示されます。誰も私を助けてくれますか?NSISランタイムがボタンを作成していません

おかげ

Function getButtons 
    nsDialogs::Create 1018 
    Pop $dialog 
    ${NSD_CreateGroupBox} 0 0 100% 100% "These DLLs were found installed" 
    # get available plugins 
    ${locate::Open} "$dllDir" `/F=1 /D=0 /M=*.dll /B=1` $0 
    StrCmp $0 0 0 loop 
    MessageBox MB_OK "Error! No DLL files found..., $dllDir" IDOK close 

    loop: 
    # counter for y value 
    StrCpy $R1 10 
    # find possible plugins for installation 
    ${Do} 
    ${locate::Find} $0 $1 $2 $3 $4 $5 $6 
    ${If} $1 == "" 
     ${ExitDo} 
    ${EndIf} 
    ;MessageBox MB_OK "Path=$1" IDOK 
    # calculate radiobutton y value 
    IntOp $R1 $R1 + 20 
    ${NSD_CreateRadioButton} 20 $R1 100% 50% "$1" 
    Pop $hwnd 
    nsDialogs::SetUserData $hwnd "$1" 
    ${NSD_OnClick} $hwnd RadioClick 
    ${Loop} 
    close: 
    ${locate::Close} $0 
    ${locate::Unload} 
    nsDialogs::Show 
FunctionEnd 

答えて

0

コントロールはすべてそこにあるあなたが50%に高さを設定しており、ラジオコントロールが透明ではないので、彼らは表示されません。

あなたがそれらを透明にすることができます:

${NSD_CreateRadioButton} 20 $R1 100% 50% "$1" 
Pop $hwnd 
SetCtlColors $hwnd SYSCLR:8 Transparent ; NSIS 3.1+ 
${NSD_AddExStyle} $hwnd ${WS_EX_TRANSPARENT} ; https://blogs.msdn.microsoft.com/oldnewthing/20121217-00/?p=5823 

が、NSISドキュメントはこのに対して警告している:

警告:使用している場合透明にチェックボックスの背景色を設定すると、正常に機能しない場合がありますXPStyle on。特定のWindowsテーマを使用している場合は、透明ではなく背景が完全に黒くなることがあります。

それはちょうど最初の場所で正しくコントロールのサイズをした方がよい:

!include nsDialogs.nsh 

Page Custom getButtons 
Page InstFiles 

var hwnd 

Function getButtons 
nsDialogs::Create 1018 
Pop $0 

${NSD_CreateGroupBox} 0 0 100% 100% "These DLLs were found installed" 
Pop $0 

StrCpy $R1 0 ; Measured in dialog units, not pixels 
FindFirst $0 $1 "$sysdir\sh*.dll" 
loop: 
    StrCmp $1 "" end 
    IntOp $R1 $R1 + 12 
    ${NSD_CreateRadioButton} 5u $R1u -20 12u "$1" 
    Pop $hwnd 
    nsDialogs::SetUserData $hwnd "$1" 
    ${NSD_OnClick} $hwnd RadioClick 
    FindNext $0 $1 
    Goto loop 
end: 
FindClose $0 

nsDialogs::Show 
FunctionEnd 

あなたがしてありますどのように多くのファイルがわからない場合、あなたがドンので、リストボックスを使用することをお勧めします」ダイアログのスペースを使い果たしてしまいます。

+0

ありがとうございます、今はうまくいきます! –

関連する問題