Программно получить код продукта проекта установки Visual Studio для приложения - PullRequest
0 голосов
/ 07 апреля 2011

У меня есть установщик, созданный с помощью Настройка и развертывание Visual Studio , который обычно работает довольно хорошо.

Время от времени один из моих выпусков имеет недостатки, и мне нужен способ быстроотмените моё решение пойти с моим невероятным обновлением.

Я могу создать ссылку, включив пользовательский класс, который наследуется от System.Configuration.Installer, или создать опцию в моем приложении, чтобы удалить себя, чтобы я мог переустановитьстарая версия, использующая что-то вроде этого:

//using System.Diagnostics;
public static void Uninstall(string productCode, string option) {
  if (!String.IsNullOrEmpty(productCode) && !String.IsNullOrEmpty(option)) {
    string path = Environment.GetFolderPath(Environment.SpecialFolder.System);
    string param1 = string.Format("{0} {1}", path, @"\msiexec.exe");
    string param2 = string.Format("{0} {1}", option, productCode);
    ProcessStartInfo psInfo = new ProcessStartInfo(param1, param2);
    // NOTE: `option` = /i to repair or remove; /x to remove only
    try {
      Process.Start(psInfo);
      return;
    } catch (Exception) { } // the uninstall failed
  }
}

Итак ...

Мой вопрос: Как мне получить ProductCode для моей установки?

ПРИМЕЧАНИЕ. Я понимаю, что Microsoft рекомендует использовать Add/Remove Programs (XP) или Programs and Features (Vista / 7), но мое приложение работает в производственной среде, в которой большинство ПК не имеют этих функций (используя tweak или некоторые другиеинструмент) нашими сетевыми администраторами.

Ответы [ 2 ]

1 голос
/ 26 июля 2011

Ответ Бен в статье SO В проекте установки Visual Studio Как создать сценарий удаления? получил то, что мне нужно.

Подытожим здесь:

"Используя Visual Studio 2005/2008, вам не нужно писать код для добавления опции удаления для проекта установки (да, я знаю, что некоторые люди могут написать код для этого)

  • В проекте установки -> окна файловой системы -> щелкните правой кнопкой мыши «Файловая система на целевом компьютере» -> добавьте специальную папку, выберите системную папку;

  • В эту системную папку Добавьте файл. Найдите файл msiexec.exe из локальной папки System32 и добавьте его. Переопределите свойства этого файла по умолчанию следующим образом:

Условие:= Не установлено (убедитесь, что вы поставили «Не установлено» точно так же, тот же случай и все остальное), Постоянный: = Истина, Система: = Истина, Переходный: = Истина, Жизненно важный: = Ложь.

  • Создайте новый ярлык в «Меню программы пользователя», установите цельв системную папку, которую вы создали в шаге 1. и укажите, что это msiexec.exe.Переименуйте ярлык на «Удалить приложение».Установите для свойства Arguments значение /xndomspace enj[ProductCode].

  • Создайте проект, игнорируйте предупреждение о том, что msiexec следует исключить, НЕ исключайте его или проект установки не будет собираться.

Условие «Not Installed» и Permananet: = True гарантируют, что msiexec.exe будет помещен только в системную папку как часть установки, если он не существует,и он не удаляется при удалении - поэтому довольно безопасно игнорировать это предупреждение и просто пойти на это.

1 голос
/ 14 апреля 2011

Ошибка установки MSI, так как «Другая версия этого продукта уже установлена» содержит фрагмент VBS, который может оказаться полезным в качестве модели.

...