インストーラーの作成にnsisスクリプトを使用しました。同じ名前でインストーラーを2回実行する場合、REPAIRとREMOVEを確認して対応する操作を実行する必要があります。アプリケーションが既にインストールされているか、次のコードを使用していないことがわかりました。
Function checkinstall
ReadRegStr $R0 HKLM "SOFTWARE\Microsoft\Windows\CurrentVersion\Uninstall\My app" "UninstallString"
IfFileExists $R0 +1 NotInstalled
call nsDialogpage
NotInstalled:
FunctionEnd
Function nsDialogpage
nsDialogs::Create 1018
Pop $Dialog
${If} $Dialog == error
Abort
${EndIf}
${NSD_CreateRadioButton} 0 5u 100% 10u "Repair"
Pop $hwnd
${NSD_AddStyle} $hwnd ${WS_GROUP}
${NSD_OnClick} $hwnd ???
${NSD_CreateRadioButton} 0 25u 100% 56u "Remove"
Pop $hwnd
${NSD_OnClick} $hwnd ???
nsDialogs::Show
ユーザーが修復ボタンを選択した場合、既存のインストールパスを上書きする必要があります。そうでない場合は、既存のインストール済みパスをアンインストールして、新しいものを続行します。上記のコードの(???)を置き換えるにはどうすればよいですか。
page custom checkinstall
!insertmacro MUI_PAGE_DIRECTORY
次のページはディレクトリの選択です。このページを呼び出す必要がありますか?これを達成する方法は?
1.ユーザーが削除ボタンを選択した場合、どうすればアンインストーラー関数を呼び出すことができますか?
Function un.Init, section /o -un.Main UNSEC000,section -un.post UNSE001
これらはアンインストーラー関数です。これらの関数を呼び出すにはどうすればよいですか?メソッドを呼び出してみましたが、機能しませんでした。