Могу ли я получить опубликованное Название продукта ClickOnce из приложения? - PullRequest
4 голосов
/ 07 мая 2011

У меня есть имя публикации ClickOnce, которое отличается от имени сборки. Для обсуждения это «Приложение 6.0». Я установил это в Свойствах для моего проекта. Есть ли способ получить это значение изнутри программы?

Ответы [ 3 ]

3 голосов
/ 03 июля 2014

Добавьте ссылку на Microsoft.Build.Tasks.v4.0.dll, затем запустите:

if (null != AppDomain.CurrentDomain.ActivationContext)
{
    DeployManifest manifest;
    using (MemoryStream stream = new MemoryStream(AppDomain.CurrentDomain.ActivationContext.DeploymentManifestBytes))
    {
        manifest = (DeployManifest)ManifestReader.ReadManifest("Deployment", stream, true);
    }
    // manifest.Product has the name you want
}
else
{
   // not deployed
}

DeployManifest также может предоставить другую полезную информацию из вашего манифеста, например Publisher или SupportUrl.

2 голосов
/ 26 мая 2011

Ответ можно найти в ClickOnce Run при запуске . По сути, вы используете InPlaceHostingManager, чтобы получить манифест ClickOnce и прочитать его. Меня беспокоит, что это асинхронный метод, но это единственное, что до сих пор работало. Упрощения очень ценятся. См. Веб-страницу для описания DeploymentDescription.

var inPlaceHostingManager = new InPlaceHostingManager(ApplicationDeployment.CurrentDeployment.UpdateLocation, false);
inPlaceHostingManager.GetManifestCompleted += ((sender, e) =>
{
    try
    {
        var deploymentDescription = new DeploymentDescription(e.DeploymentManifest);
        string productName = deploymentDescription.Product;
        ***DoSomethingToYour(productName);***

        // - use this later -
        //var commandBuilder = new StartMenuCommandBuilder(deploymentDescription);
        //string startMenuCommand = commandBuilder.Command;
    }
    catch (Exception ex)
    {
        MessageBox.Show(ex.Message + Environment.NewLine + ex.StackTrace);
    }
});
2 голосов
/ 08 мая 2011

Свойство ApplicationDeployment.UpdatedApplicationFullName

...