microsearchのブログ -3ページ目

Nsisでオプション選択画面のカスタマイズに必要な技術のメモ

SubSection "拡張機能" SEC08
Section "RakutenToolBar" SEC06
SectionEnd
SubSectionEnd

関連の画像:
$microsearchのブログ

条件により、上記の画像のオプション画面を表示するかどうかを決まる:
# 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」で実行したら、無事に実行できる。



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\"" )

効果:コマンド画面をなくなる。