Ejemplo n.º 1
0
        /// <summary>
        ///     Crea un collegamento con il riferimento al deployment dell'applicazione (appref-ms).
        /// </summary>
        /// <remarks>
        ///     Il collegamento creato con questo metodo riferisce al prodotto installato
        ///     pertanto non viene alterato a seguito di un aggiornamento da parte di ClickOnce.
        /// </remarks>
        /// <param name="path"></param>
        /// <param name="caption"></param>
        public string CreateDeploymentShortcut(DirectoryInfo path, string caption)
        {
            if (_deploymentWrapper.IsNetworkDeployed)
            {
                string linkPath       = Path.Combine(path.ToString(), caption + ".appref-ms");
                Uri    updateLocation = _deploymentWrapper.UpdateLocation;

                ApplicationId deploymentInfo = _deploymentWrapper.GetDeploymentInfo();
                using (var shortcutFile = new StreamWriter(linkPath, false, Encoding.Unicode))
                {
                    shortcutFile.Write(@"{0}#{1}, Culture=neutral, PublicKeyToken=",
                                       updateLocation.ToString().Replace(" ", "%20"), deploymentInfo.Name.Replace(" ", "%20"));
                    foreach (byte b in deploymentInfo.PublicKeyToken)
                    {
                        shortcutFile.Write("{0:x2}", b);
                    }
                    shortcutFile.Write(", processorArchitecture={0}", deploymentInfo.ProcessorArchitecture);
                }
                return(linkPath);
            }
            throw new InvalidDeploymentException("This is not a ClickOnce application");
        }