C # код для удаления установки installshield - PullRequest
0 голосов
/ 07 октября 2018
  1. Я настроен с помощью Installshield.(Setup.exe).
  2. Я хочу, чтобы код c # удалял этот exe-файл, используя код продукта установки Installshield.
  3. А также я должен знать, почему exe не удалялся при попытке удалить вручную,Это вызывает откат.
  4. Мои файлы журналов выглядят так.Есть ли проблема?

LogFile

Примечание. Я подключил модуль MergeModule (MSM) в настройке Installshield.

1 Ответ

0 голосов
/ 08 октября 2018

Ведение журнала и отладка : Если ваша установка откатилась во время удаления, проверьте файл журнала MSI.У вас, похоже, есть файл журнала, поэтому, пожалуйста, найдите его "Value 3". Этот трюк при ведении журнала и отладке MSI объясняется в этом ответе .

Общие компоненты : компоненты могут быть общиминесколькими продуктами, которые установлены.Эти компоненты не будут удалены во время удаления, если только один продукт не зарегистрирован как «клиент».Вы можете определить, какие продукты совместно используют компонент, используя этот VBScript.Рекомендуем сохранить его в текстовый файл и запустить с рабочего стола.Введите GUID компонентов из файла журнала, показанного в вашем вопросе:

Dim installer : Set installer = CreateObject("WindowsInstaller.Installer")
Dim counter : counter = 1

' Get component GUID from user
componentguid = Trim(InputBox("Please specify component GUID to look up (sample provided, please replace):", "Component GUID:","{4AC30CE3-6D22-5D84-972C-81C5A4775C3D}"))
If componentguid = vbCancel Or Trim(componentguid) = "" Then
   WScript.Quit(0) ' User aborted
End If

' Get list of products that share the component specified (if any)
Set componentclients = installer.ComponentClients(componentguid)
If (Err.number <> 0) Then
   MsgBox "Invalid component GUID?", vbOKOnly, "An error occurred:"
   WScript.Quit(2) ' Critical error, abort
End If

' Show the products
For Each productcode in componentclients
   productname = installer.productinfo (productcode, "InstalledProductName")
   productlist = productlist & counter & " - Product Code: " & productcode & vbNewLine & "Product Name: " & productname & vbNewLine & vbNewLine
   counter = counter + 1
Next

message = "The below products share component GUID: " & componentguid & vbNewLine & vbNewLine

MsgBox message & productlist, vbOKOnly, "Products sharing the component GUID: "

DumpComponentList.zip : эксперт по установке Windows Фил Уилсон имеет другой VBScript, который будет выгружать все компоненты установщика Windows в текстовый файл.Приведенный выше скрипт адаптирован из того скрипта, который вы можете найти здесь: DumpComponentList.zip .

DTF : для .NET естьОболочка DTF для установщика Windows Win32 / COM API (Microsoft.Deployment.WindowsInstaller.dll - этот файл устанавливается с WiX ).Вот ответ от Tom Blodget, использующего LINQ для доступа к информации об установщике Windows .

...