Nsis では、次のものを使用しています。
...
nsDialogs::Create 1018
Pop $0
nsDialogs::Show
...
しかし、ダイアログ ボックスのサイズが私のニーズに合いません。このダイアログに x と y の長さを指定するにはどうすればよいですか?
Nsis では、次のものを使用しています。
...
nsDialogs::Create 1018
Pop $0
nsDialogs::Show
...
しかし、ダイアログ ボックスのサイズが私のニーズに合いません。このダイアログに x と y の長さを指定するにはどうすればよいですか?
ダイアログの高さが、配置しようとしているすべてのコントロールに対して十分ではありません。
2 つの Windows API を試してみましたが、それらが機能している間に、インストールのクライアント領域が重なり、[OK]/[キャンセル] ボタンが隠れてしまいました。
私は最終的に「リソースハッカーとChangeUIを使用する」ことを考え出しました。思ったよりずっと大変でした。というわけで、詳しい作り方はこちら。私は、ModernUI ではなく nsDialogs に深く関わっていました。これは、例と同じように作成されたウィンドウの nsDialogs サイズ変更のハウツーです。ModernUI については上記で説明しています。
nsDialogs::Create 1018
あなたが持っているのはコードとプレビューです。コードの最初の行に注意してください...
105 DIALOGEX 0, 0, 280, 162
NSIS スクリプトでは、早い段階で ChangeAll への呼び出しを追加する必要があります。
ChangeUI all tall_UI.exe
Page custom nsDialogsPage
Function nsDialogsPage
nsDialogs::Create 1018
Pop $Dialog
...
それは私のためにそれをしました。試行錯誤を繰り返し、常にコンパイルして ResourceHacker に保存し、NSI を再構築します。ダイアログが ResourceHacker に表示されるプレビューよりも大きいか小さいことに気付くかもしれません。これは、NSIS がフォント サイズや DPI などに基づいてダイアログをスケーリングするためです。見栄えがよくなるまで、何度も試してみてください。
nsDialogs::Create 1018 がリソース ハッカーの 5 行目の数字と一致することに注意してください。
CONTROL "", 1018, STATIC, SS_BLACKRECT | WS_CHILD | WS_GROUP, 7, 7, 266, 160
このデモをまとめた後、いくつかのテストを行いました。その 1018 リソースの配置とサイズは効果がありますが、黒ではない理由はわかりません。
私のデモの完全なコードを以下に示します。
#Created with NSIS version 2.46 downloaded from SourceForge.net
#Based on "Adding Controls" section of user docs
# http://nsis.sourceforge.net/Docs/nsDialogs/Readme.html#step-add
!include nsDialogs.nsh
Name "Launchpad"
OutFile "Master Installer.exe"
BrandingText " "
Caption "Launchpad"
RequestExecutionLevel admin
SetFont "Arial" 10
VIProductVersion "2.5.0.0"
Var Dialog
Var Button
ChangeUI all tall_UI.exe
Page custom nsDialogsPage
Function nsDialogsPage
nsDialogs::Create 1018
Pop $Dialog
# It will create a new dialog in the page and return its HWND on the stack. The result must be popped from the stack to prevent stack corruption. If the result is error, the dialog couldn't be created.
${If} $Dialog == error
Abort
${EndIf}
# ${NSD_Create*} x y width height text
## Going to use $0 for y of each new control.
StrCpy $0 "29"
${NSD_CreateButton} 50% "$1u" 25% 12u "Product Manual"
Pop $Button
${NSD_OnClick} $Button Manual_Install_Clicked
IntOp $0 $0 + 18
IntOp $1 $0 - 2
${NSD_CreateButton} 50% "$1u" 25% 12u "Product 1 Installer"
Pop $Button
${NSD_OnClick} $Button Product1_Install_Clicked
IntOp $0 $0 + 18
IntOp $1 $0 - 2
${NSD_CreateButton} 50% "$1u" 25% 12u "Product 2 Installer"
Pop $Button
## ${NSD_OnClick} ...
IntOp $0 $0 + 18
IntOp $1 $0 - 2
${NSD_CreateButton} 50% "$1u" 25% 12u "Product 3 Installer"
Pop $Button
## ${NSD_OnClick} ...
IntOp $0 $0 + 18
IntOp $1 $0 - 2
${NSD_CreateButton} 50% "$1u" 25% 12u "Product 4 Installer"
Pop $Button
## ${NSD_OnClick} ...
IntOp $0 $0 + 18
IntOp $1 $0 - 2
${NSD_CreateButton} 50% "$1u" 25% 12u "Product 1 Installer"
Pop $Button
## ${NSD_OnClick} ...
IntOp $0 $0 + 18
IntOp $1 $0 - 2
${NSD_CreateButton} 50% "$1u" 25% 12u "Product 1 Installer"
Pop $Button
## ${NSD_OnClick} ...
IntOp $0 $0 + 18
IntOp $1 $0 - 2
nsDialogs::Show
FunctionEnd
Function ExecInstall
pop $0
ExecWait $0 $1
IfErrors 0 ExecDone
MessageBox MB_OK|MB_IconExclamation "$1 $0 not found"
ExecDone:
##Call Update_Install_Statuses
FunctionEnd
Function Manual_Install_Clicked
ExecShell "open" "$EXEDIR\Manual\Manual.PDF"
FunctionEnd
Function Product1_Install_Clicked
Exec "Explorer.exe $EXEDIR\Support Files"
FunctionEnd
Function Product2_Install_Clicked
Push "$EXEDIR\Product2 Folder\Product2 Installer.exe"
Call ExecInstall
FunctionEnd
Section
SectionEnd