Я хочу показать пользователю диалог, который говорит, что «это будет удалено с этой установкой», и если нажать «ДА» или «ОК», то установка может продолжиться; в противном случае я хочу прервать его.
Поэтому я определил пользовательское действие (запустить vbscript) следующим образом:
<CustomAction Id="ShowUninstallInformationDlg" Impersonate="yes" Return="check" Execute="immediate" BinaryKey="ShowUninstallInformationDlg.vb" VBScriptCall=""/>
<Binary Id="ShowUninstallInformationDlg.vb" SourceFile="c:\myscripts\installer\ShowUninstallInformationDlg.vbs"/>
<InstallExecuteSequence>
<Custom Action="ShowUninstallInformationDlg" After="FindRelatedProducts">NOT Installed AND NOT PATCH AND NOT MYPRODUCT_ANYVERSION=""</Custom>
</InstallExecuteSequence>
VBSCRIPT (ShowUninstallInformationDlg.vbs):
'ShowUninstallInformationDlg
Option Explicit
Dim text
Dim productName
Dim rec
productName = Session.Property("ProductName")
text = "The following installations are going to be removed with the installation of " & productName & ":"
If Session.Property("MYPRODUCT_ANYVERSION") <> "" Then
text = text & "\n * MyOtherProduct (any version)"
End If
Set rec = Session.Installer.CreateRecord(1)
rec.StringData(0) = text
Session.Message &H0B000034, rec
Тип "& H0B000034", который я использую в качестве аргумента "Session.Message", взят из примера из MSDN, см. http://msdn.microsoft.com/en-us/library/windows/desktop/aa371672(v=vs.85).aspx.
Всегда выполняется сценарий. В журнале MSI появляется следующая ошибка:
Ошибка 1720. Проблема с этим пакетом установщика Windows. Не удалось запустить сценарий, необходимый для завершения этой установки. Обратитесь в службу поддержки или к поставщику пакета. Настраиваемое действие Ошибка сценария ShowUninstallInformationDlg -2147467259, Ошибка Msi API: сообщение, тип, строка записи 19, столбец 1,
Я много раз искал в Google примеры использования Session.Message, но безуспешных результатов ... Кто-нибудь может помочь? Спасибо!