После некоторого поиска в Google я обнаружил, что настраиваемое действие для установщика Visual Studio, возможно, должно указывать на класс установщика.Итак, я создал новый проект типа класса в моем решении.Я удалил файл class1.cs и добавил класс установщика в новый проект со следующим кодом (помните: необходимо использовать security.permissions в какой-то момент):
using System;
using System.Collections;
using System.Collections.Generic;
using System.ComponentModel;
using System.Configuration.Install;
using System.Linq;
using System.Diagnostics;
using System.Security.Permissions;
namespace AppName
{
[RunInstaller(true)]
public partial class InstallerClass : System.Configuration.Install.Installer
{
public InstallerClass()
{
InitializeComponent();
}
public override void Commit(System.Collections.IDictionary savedState)
{
base.Commit(savedState);
System.Diagnostics.Process.Start(Context.Parameters["TARGETDIR"].ToString() + "application.exe");
// Very important! Removes all those nasty temp files.
base.Dispose();
}
}
}
После добавления InstallerClass,Я щелкнул правой кнопкой мыши по проекту установщика, выбрал «Добавить»> «Вывод проекта» и добавил класс установщика.Затем я щелкнул правой кнопкой мыши на установленном проекте и сделал View> Custom Action.Я добавил класс установщика в обе папки Install и Commit (если вы добавите его только в Commit, вы получите ошибку 1001: не удалось найти файл InstallState. Из-за переопределения commit он будет работать только при фиксации.создан на этапе 2, поэтому, если его нет в обоих, он потерпит неудачу).
Необходимо добавить запись CustomActionData.Для этого выберите «Первичный вывод из InstallerClass» и перейдите на вкладку «Свойства».Вставьте следующее в CustomActionData:
/TARGETDIR="[TARGETDIR]\"
После того, как это было добавлено, приложение запускается правильно, когда установка завершается, и вы можете закрыть установщик, не дожидаясь выхода из приложения!
Только чтоМне было нужно.Спасибо Google за сохранение моего бекона.
Единственная проблема, которую я заметил, была то, что установщик теперь создает несколько файлов .tmp и файл .InstallState в моем ApplicationFolder.Мне интересно, есть ли что-то дополнительно, что нужно добавить в класс установщика, чтобы избавиться от этих бесполезных файлов?
Разобрался, как избавиться от временных файлов.Обновлен код с помощью Dispose ().