¿Cómo detecto la primera vez que se ejecuta una aplicación implementada con ClickOnce?

Tengo una aplicación implementada con ClickOnce y actualmente la estoy usando para detectar la primera vez que se ejecuta una nueva implementación:

if (ApplicationDeployment.IsNetworkDeployed
    && ApplicationDeployment.CurrentDeployment.IsFirstRun)
{
    // Display release notes so user knows what's new
}

arece que funciona como se esperaba después de que ClickOnce realiza una actualización automática.

Pero no funciona en absoluto cuando el usuario va a publishing.htm en el sitio de instalación e instala una versión más nueva manualmente. ¿Hay alguna manera de detectarambo de estas condiciones de manera confiable?

Editar La situación que estoy tratando de explicar: a veces los usuarios escuchan que se ha lanzado una actualización y van manualmente a publicar.htm para obtener la nueva versión, en lugar de iniciar la aplicación y dejar que ClickOnce maneje la actualización. Para ClickOnce, esto aparentemente no se puede distinguir de una instalación por primera vez. ¿Es eso cierto

Código de solución: Terminé creando una clase auxiliar de ClickOnce con la siguiente sección clave:

    public static bool IsFirstRun
    {
        get
        {
            if (!IsNetworkDeployed)
                return false; // not applicable == bool default value

            if (!File.Exists(VersionFileName))
                return true;

            return (GetLastRunVersion() != Version.ToString());
        }
    }

    public static void StoreCurrentVersion()
    {
        File.WriteAllText(VersionFileName, Version.ToString());
    }

    public static string GetLastRunVersion()
    {
        using (var stream = File.OpenText(VersionFileName))
        {
            return stream.ReadToEnd();
        }
    }

    public static string VersionFileName
    {
        get
        {
            StringBuilder filename = new StringBuilder(Files.LocalFilesPath);
            if (!filename.ToString().EndsWith(@"\"))
                filename.Append(@"\");
            filename.Append(@"versioninfo.dat");
            return filename.ToString();
        }
    }

Respuestas a la pregunta(3)

Su respuesta a la pregunta