で複数行文字列のレジストリ値を作成します。 ?が、文字列型のみのために、私はこのアプリケーションのレジストリエントリを作成することができ、私は自分のアプリケーションのためのパッケージを作成しようとしましたNSIS
2
A
答えて
1
Registry plug-inは、MULTI_SZなどのさまざまな種類のサポートがあります。
また、このexample scriptをSystemプラグインを使用して確認してください。
0
NSISへのWriteRegMultiStrの基本サポートを追加しましたが、NSIS v3.02がそれを使用するのを待たなければなりません。あなたができることを意味時間で
:
ExecWait
システムプラグインを使用してnsExecまたは
Regedit.exe /S file.reg
でReg.exeを実行するidlebergにより示唆されるようRegistry plug-inを使用します(私のコードまたはthis from the Wiki)
NSIS v3.0の+:
!include Util.nsh
!include LogicLib.nsh
!macro RegMultiStr_Free list
System::Free ${list}
!macroend
!macro RegMultiStr_Begin list new
StrLen ${list} `${new}`
System::Call '*(&t${list}s,&t1"",&t1"")p.s' `${new}`
Pop ${list}
!macroend
!macro RegMultiStr_Append list new
Push ${list}
Push `${new}`
!insertmacro CallArtificialFunction RegMultiStr_AppendImp
Pop ${list}
!macroend
!macro RegMultiStr_AppendImp
System::Store S
Pop $2 ; New string
Pop $1 ; List
System::Call KERNEL32::GlobalSize(pr1)i.r3 ; $3 = TotSize
StrLen $4 $2
System::Call '*(&i$3,&t$4,&t1)p.r5'
System::Copy $5 $1
IntOp $3 $3 - ${NSIS_CHAR_SIZE}
System::Call '*$5(&i$3,&t$4s,&t1"",&t1"")' $2
!insertmacro RegMultiStr_Free $1
Push $5
System::Store L
!macroend
!macro RegMultiStr_Write hk subkey name list
Push ${hk}
Push `${subkey}`
Push `${name}`
Push ${list}
!insertmacro CallArtificialFunction RegMultiStr_WriteImp
!macroend
!macro RegMultiStr_WriteImp
System::Store S
Pop $4 ; List
Pop $3 ; Name
Pop $2 ; SubKey
Pop $1 ; Root HK
System::Call 'ADVAPI32::RegCreateKey(ir1, tr2, *p0r5)i.r0' ; $5 = HKEY
${If} $0 = 0
StrCpy $7 $4 ; list items pointer
loop:
System::Call KERNEL32::lstrlen(t)(pr7)i.r6
IntOp $0 $0 + ${NSIS_CHAR_SIZE} ; \0
${IfThen} $6 = 0 ${|} Goto Write ${|}
!if "${NSIS_CHAR_SIZE}" > 1
IntOp $6 $6 * ${NSIS_CHAR_SIZE}
!endif
IntOp $0 $0 + $6
IntOp $6 $6 + ${NSIS_CHAR_SIZE} ; \0
${IntPtrOp} $7 $7 + $6
Goto loop
write:
System::Call 'ADVAPI32::RegSetValueEx(pr5, tr3, i0, i7, pr4, ir0)i.r0'
System::Call 'ADVAPI32::RegCloseKey(pr5)'
${EndIf}
System::Store L
!macroend
!include WinCore.nsh
Section
!insertmacro RegMultiStr_Begin $0 "Foo"
!insertmacro RegMultiStr_Append $0 "Bar"
!insertmacro RegMultiStr_Write ${HKEY_CURRENT_USER} "Software\NSIS\Test" "MultiStrTest" $0
!insertmacro RegMultiStr_Append $0 "B a z"
!insertmacro RegMultiStr_Write ${HKEY_CURRENT_USER} "Software\NSIS\Test" "Test 2" $0
!insertmacro RegMultiStr_Free $0
SectionEnd
関連する問題
- 1. どのように私はユーザーがユーザーのためだけに作成されたときに新しいフォルダを作成することができます
- 2. はPythonで文字列を置くことは、私は私がコーディングしていますテキストベースのRPGのためのダイナミックマップを作成しようとしていますので、私はこの配列を試してみました
- 3. は私がのEditTextのために自分のスタイルを作成し
- 4. SearchViewは/私はこのようなものを作成したいのですが、私のアプリケーションで
- 5. 文字列名でクラスのインスタンスを作成する方法は?私はこれらの目的のために `window`を使用しようとしました。
- 6. 私は自分のアプリケーションが文字列として任意の一致を読みたい文字列
- 7. :(私は、アプリケーションのための言語の文字列をロードするためのPhoneGapでローカルファイルを読み込むしようとしていると私はそれを動作させることができない</p> <p>をPhoneGapの
- 8. 私はオンライン行って、この見つかったので、私は私のイメージのため虫眼鏡を作成しようとしてきた私のイメージ
- 9. は、私はこのように構成されたビューを作成するためにwan'tの文で2回
- 10. は、私は私のlaravelアプリケーションでいくつかのルートを遮断することができるようにミドルウェアを作成したが、イマイチ作業ルート
- 11. ガルプバンドルはその後、私は自分のアプリケーションのための3つの縮小さバンドルを作成してい
- 12. Qtは、私がこのようなtablewidgetを作成したエディットボックス
- 13. 私は、テキストベースのアプリケーションのためのTkinterの出力ウィンドウを作成しようとしてい
- 14. は私のウェブ・ブラウザ・アプリケーションは、私が作成した
- 15. 私はこのコードの通知を作成しようとしましたBroadcastReceiver
- 16. Laravel 5.2データベース方式は、私がアドレステーブルを作成するための次のスキーマきたこと自己
- 17. は、私は、ユーザー(s)は組織図を作成または更新することができますアプリケーションを作成しようとしています
- 18. 、私は別のもののために新しいビットマップを作成しようとしたとき、私は、この問題を持っているコピー
- 19. 流星ヘルパーは、私がリターン文字列データのためのヘルパーを作成したいと考えて何も
- 20. 私のiosアプリケーションのためのガイド(チュートリアル)を作成する
- 21. アプリケーションのアイコンは、私がアプリケーションを作成し、そのためのアイコンをアップロードし、検索結果ページ
- 22. 行は、私はこのチュートリアルに従うことによって、マルチカラムリストビューを作成しようとしました
- 23. Androidの地図アプリケーションは:私はイムが自分のアプリケーションを実行すると、私はこのエラーを得た
- 24. 私はYのような私のウェブサイトのユーザーのためのライブクライアントチャットアプリケーションを作ることができます!メッセンジャー?
- 25. 私はどのように私のdjangoモデルのためのCSVファイルを作成するのですか?ここ
- 26. 私のアプリケーションのためのアプリを招待ダイアログを作成したい
- 27. 私は自分のLinux VPS上の.exeファイルを開くしようとしている、まだ私はこのエラーを取得しようとすると、アプリケーションのウィンドウを作成しようとしたが、何のドライバが
- 28. は、私は私がテーブルを作成し、そのにロードすることができ、初めてのパンダをロードしようとすると、パンダとSQLAlchemyの
- 29. どのように私はデータベース関連の機能を作成するために一般化されたライブラリを作成することができます
- 30. 以下に示すようなPHPここで私は、クエリ文字列の配列を作成したい
ドキュメントは、このような機能を一覧表示するには表示されませんが、あなたは '手動で使用して'のRegOpenKeyEx() '、' RegSetValueEx() 'と' RegCloseKey()を呼び出すことが[System.dll plugin](http://nsis.sourceforge.net/Docs/AppendixD.html#useful_system_plugin)を参照してください。または、一時的な* .reg *ファイルを準備し、* regedit.exe *を呼び出してインポートすることもできます。 –