Nsisでオプション選択画面のカスタマイズに必要な技術のメモ
SubSection "拡張機能" SEC08
Section "RakutenToolBar" SEC06
SectionEnd
SubSectionEnd
関連の画像:

条件により、上記の画像のオプション画面を表示するかどうかを決まる:
# check if XXX is installed
ReadRegStr $R8 HKLM "SOFTWARE\Microsoft\Windows\CurrentVersion\Uninstall\XXX" 'UninstallString'
${If} $R8 == ""
; インストールしてない
StrCpy $R8 "NO"
${Else}
; インストールされている
StrCpy $R8 "HAS"
${EndIf}
${If} $R8 == "HAS"
SectionSetFlags ${SEC06} 1
SectionSetText ${SEC06} "楽天ツールバー"
${Else}
;表示しない方法
!insertmacro UnselectSection ${SEC06}
SectionSetText ${SEC06} ""
!insertmacro UnselectSection ${SEC08}
SectionSetText ${SEC08} ""
${EndIf}
*説明:
Used in .onInit.
①disable or enable sections using SectionSetFlags.
②hide sections using SectionSetText.
Section "RakutenToolBar" SEC06
SectionEnd
SubSectionEnd
関連の画像:

条件により、上記の画像のオプション画面を表示するかどうかを決まる:
# check if XXX is installed
ReadRegStr $R8 HKLM "SOFTWARE\Microsoft\Windows\CurrentVersion\Uninstall\XXX" 'UninstallString'
${If} $R8 == ""
; インストールしてない
StrCpy $R8 "NO"
${Else}
; インストールされている
StrCpy $R8 "HAS"
${EndIf}
${If} $R8 == "HAS"
SectionSetFlags ${SEC06} 1
SectionSetText ${SEC06} "楽天ツールバー"
${Else}
;表示しない方法
!insertmacro UnselectSection ${SEC06}
SectionSetText ${SEC06} ""
!insertmacro UnselectSection ${SEC08}
SectionSetText ${SEC08} ""
${EndIf}
*説明:
Used in .onInit.
①disable or enable sections using SectionSetFlags.
②hide sections using SectionSetText.
sudo sh: command not found
あるプロジェクトで、「sudo ./mycmd.sh /home/test/data/upload/v2」を実行する時、システムは次のようなメッセージを返します。
sh: 7z: command not found
「man sudo」で調査すると、「sudo は、以下の環境変数を使用する。 PATH SECURE_PATHが設定されていると安全な値に設定される。」
*sudoをインストールする時、「--with-secure-path」を付いたはずです。
だから、「sudo env PATH=$PATH ./mycmd.sh /home/test/data/upload/v2」で実行したら、無事に実行できる。
sh: 7z: command not found
「man sudo」で調査すると、「sudo は、以下の環境変数を使用する。 PATH SECURE_PATHが設定されていると安全な値に設定される。」
*sudoをインストールする時、「--with-secure-path」を付いたはずです。
だから、「sudo env PATH=$PATH ./mycmd.sh /home/test/data/upload/v2」で実行したら、無事に実行できる。
consoleプログラムを実行するときの「黒いコマンドプロモーション画面」を消す方法
consoleプログラムを実行するとき、黒いコマンドプロモーション画面を消す方法と原理を説明する。
consoleプログラムコンパイルしてリンクする時、プロジェクトのリンク設定により、コマンド画面を出すかどうかを判断する。
具体的に:
リンクのconfigureに、「/subsystem」と「/entry」のペアがあります。
subsystemの値:
1)console:
このタイプのプログラムを実行するとき、DOSと似てる画面が出て来る。プログラムのエントリ関数は、main()またはwmain()となります。
2)windows:
このタイプのプログラムは、コマンド画面なしです。windowsのプログラムである。エントリ関数は、WinMain()またはwWinMain()となります。
3)他の説明をMSDNに参考してください。
consoleプログラム中に、以下の行を追加すれば、プログラムのエントリ関数を変換できる。
① unicodeプログラムの場合:
#pragma comment( linker, "/subsystem:\"windows\" /entry:\"wmainCRTStartup\"" )
② unicodeプログラムではない場合:
#pragma comment( linker, "/subsystem:\"windows\" /entry:\"mainCRTStartup\"" )
効果:コマンド画面をなくなる。
consoleプログラムコンパイルしてリンクする時、プロジェクトのリンク設定により、コマンド画面を出すかどうかを判断する。
具体的に:
リンクのconfigureに、「/subsystem」と「/entry」のペアがあります。
subsystemの値:
1)console:
このタイプのプログラムを実行するとき、DOSと似てる画面が出て来る。プログラムのエントリ関数は、main()またはwmain()となります。
2)windows:
このタイプのプログラムは、コマンド画面なしです。windowsのプログラムである。エントリ関数は、WinMain()またはwWinMain()となります。
3)他の説明をMSDNに参考してください。
consoleプログラム中に、以下の行を追加すれば、プログラムのエントリ関数を変換できる。
① unicodeプログラムの場合:
#pragma comment( linker, "/subsystem:\"windows\" /entry:\"wmainCRTStartup\"" )
② unicodeプログラムではない場合:
#pragma comment( linker, "/subsystem:\"windows\" /entry:\"mainCRTStartup\"" )
効果:コマンド画面をなくなる。