Насколько я могу судить, NsisIIS :: DeleteVDir принимает только один параметр, а не два параметра (/ NOUNLOAD не считается параметром)
Другая возможная проблема заключается в том, что эта строка ограничена 100 символами. Если ваше имя длиннее, вы должны отправить сообщение об ошибке здесь . (При быстром взгляде на код кажется, что он теряет много памяти, возможно, вы также захотите сообщить об ошибке)
Также возможно вызвать интерфейс COM с помощью системного плагина, код может выглядеть примерно так:
!include LogicLib.nsh
!define IID_IADsContainer {001677d0-fd16-11ce-abc4-02608c9e7553}
StrCpy $9 "NameOfItemToDelete" ;Edit this!
System::Call 'ActiveDS::ADsGetObject(w "IIS://localhost/w3svc/1/Root", g "${IID_IADsContainer}", *i.r1)i.r0'
${If} $0 = 0
System::Call 'OleAut32::SysAllocString(w "IIsWebVirtualDir")i.r2'
System::Call 'OleAut32::SysAllocString(w "$9")i.r3'
${If} $2 <> 0
${AndIf} $3 <> 0
System::Call '$1->15(ir2,ir3)i.r0' ;IADsContainer::Delete
;If $0 is 0 then it succeeded, otherwise it failed
System::Call 'OleAut32::SysFreeString(ir2)'
System::Call 'OleAut32::SysFreeString(ir3)'
${EndIf}
System::Call '$1->2()' ;Release
${EndIf}
(Примечание. Я не тестировал этот код, поскольку у меня нет настройки IIS для тестирования)