これまでのところ、レジストリキーを読み、そのディレクトリが存在するかどうかをテストすることでソフトウェアの以前のインストールを検出する方法を知りました。 (どちらもNSISのヘルプファイルによく書かれています)。今は、アプリケーションが以前にインストールされている場合、ユーザーに別のディレクトリを指定させる必要があります。 (以前のバージョンでは、保存されたデータを含むすべてが削除されるため、自分でアンインストールする必要はありません)。NSIS - ユーザーに別のディレクトリを選択させる
MUI2.nshには、ライセンス、インストールフォルダ、進行状況インジケータなどの定義済みのテンプレートがあります。 インストーラフローのこの段階でバリデーションを追加するにはどうすればよいですか?
更新 - Tried Paulのソリューションですが、動作しません。スクリプトの先頭に が、私はこの機能を参照するために
!define MUI_PAGE_CUSTOMFUNCTION_LEAVE validateDirectory
!insertmacro MUI_PAGE_DIRECTORY
を宣言した:
Function validateDirectory
ReadRegStr $R0 HKLM "SOFTWARE\Aadhaar Enrolment Client" "Installdir"
Pop $R0
StrCmp $R0 $OUTDIR +1 +3
MessageBox MB_ICONSTOP|MB_OK 'The directory $OUTDIR already exists.Please choose a different directory.'
Abort
FunctionEnd
この関数は、メッセージが表示されますが、中断していません。さらに、ディレクトリ選択ページで「戻る」をクリックして再度「進む」をクリックすると、単にインストールが続行されます。
これはしばらく経っていません...解決策はありませんか?特にMUIを使用しないものはありますか? – e40
なし..そして、私はずっと以来、NSISの使用から移ってきました。 – Rex
NSISフォーラムの助けを借りて、私はそれを働かせることに言及します。 http://forums.winamp.com/showthread.php?t=380848 – e40