Permitir que ClickOnce instale varios programas publicados desde el mismo proyecto en el mismo entorno (solo ediciones de .NET Framework)

Actualización de la página :
Fecha de creación de la página :

Entorno de comprobación de funcionamiento

Visual Studio
  • Visual Studio 2022
.NET Framework
  • .NET Framework 4.8

Entornos requeridos

Marco de referencia
  • Formularios Windows Forms (.NET Framework) en general
  • WPF (.NET Framework) en general

Al principio

En este consejo se describe cómo instalar varios ClickOnce publicados desde el mismo proyecto por separado en el mismo entorno.

Acerca del procedimiento para publicar varias copias del mismo proyecto en diferentes configuraciones

Por ejemplo, incluso en el mismo proyecto, si el contenido de procesamiento se cambia en función de la configuración de compilación, es posible que desee publicar como un programa independiente. Esto es posible en la versión .NET (Core), pero no en la versión de .NET Framework con las características estándar de Visual Studio.

Este método se resume en las siguientes sugerencias mediante un programa por lotes. Este Consejo se explica bajo la premisa de que se completan los siguientes contenidos.

Condiciones en las que ClickOnce se instala como aplicaciones independientes

Si publica utilizando el programa por lotes descrito anteriormente, se cambia la configuración de compilación, pero ambos se tratan como la misma aplicación, Si intenta instalar dos en el mismo entorno, habrá un conflicto y la instalación fallará incluso si intenta instalar más tarde.

Necesito hacer que esto parezca ser una aplicación separada, pero de acuerdo con el artículo al que se hace referencia, los siguientes parámetros identifican la aplicación:

Referencia: (.NET) Cuando inicio la aplicación después de publicar con ClickOnce, obtengo que "el ID de ubicación no coincide con la suscripción"

  • Nombre de la aplicación
  • Token de clave pública
  • Cultura
  • Arquitectura del procesador (por ejemplo, x86)

Entre estos, creo que no es deseable cambiar la "cultura" y la "arquitectura del procesador" porque existe la posibilidad de resultados de procesamiento no deseados.

Creo que hay una manera de cambiar el "nombre de la aplicación", Básicamente, no se recomienda porque solo se puede dar un nombre a un proyecto. Existe la posibilidad de que se puedan realizar múltiples definiciones mediante la configuración de compilación y los parámetros de condición en el contenido del archivo de proyecto, Dado que solo se puede establecer una interfaz de usuario en Visual Studio, es un poco peligroso porque se puede sobrescribir en función de la operación.

El resto es un "token de clave pública", pero este le permite crear múltiples certificados, Dado que se puede especificar como parámetro en el momento de la publicación de ClickOnce, me gustaría identificar la aplicación con este tiempo.

Procedimiento de comprobación de funcionamiento

Desde el punto de creación del proyecto hasta el punto en que está listo para publicarse como un archivo por lotes, es lo mismo que los siguientes consejos, así que consulte para el procedimiento hasta ese momento.

Creación de un certificado

Esta vez, lo confirmaremos con un certificado de prueba para la muestra. Originalmente, debería hacerse con un certificado regular, pero dado que requerirá un procedimiento que no sea el tema principal, como la creación de certificados y la preparación de la autoridad de certificación, excluiré la explicación relacionada con los certificados. En producción, está bien reemplazar el archivo de certificado de prueba con el archivo de producción.

Después de crear el proyecto y crear el lote para su publicación, vuelva a Visual Studio. Abra las propiedades del proyecto y elija Firmar en el menú de la izquierda. Hay una verificación para "Firmar el manifiesto clickonce", así que compruébelo.

Ahora cree dos certificados. Esta vez lo crearemos en esta pantalla, pero". pfx" formato de archivo, no hay problema con la creación de certificados por otros medios.

Hay un botón "Crear certificado de prueba" en la esquina inferior derecha, así que haga clic en él.

También puedes poner una contraseña, pero funciona tanto si la pones como si no. Sin embargo, si desea poner una contraseña, el procedimiento será problemático, por lo que no lo pondré esta vez.

Se ha generado un archivo de certificado (.pfx) para el proyecto. El nombre de archivo generado aquí es fijo, pero se puede cambiar más adelante. Por cierto, la validez del certificado de prueba creado aquí es de un año. Después de un año, deberá volver a crear un nuevo certificado.

Siga los mismos pasos para crear otro.

Esta vez, publicaremos en la compilación Debug y la build Release, por lo que cambiaremos el nombre a uno claro.

Modificación de lotes

Abra el archivo por lotes que creó (.bat) en un editor de texto y agregue lo siguiente a los parámetros de msbuild:

Descripción
del nombre del parámetro requerida
ManifestKeyFile El nombre de archivo (.pfx) del certificado. Especifique una ruta de acceso relativa o absoluta desde el archivo de proyecto.
ManifestCertificateThumbprint Huella digital del certificado de manifiesto. El valor a poner puede ser cualquier cosa, pero debe ser puesto por todos los medios.
Nombre del producto Nombre del producto. Se convierte en el nombre para mostrar del menú de inicio o la lista de programas.
PublisherName Nombre de la empresa pública. Se convierte en el nombre de la carpeta al organizar programas en el menú inicio.

En función de lo anterior, modifique el archivo de revisión de la siguiente manera.

ClickOnceDebug publica.bat (ejemplo)

call "C:\Program Files\Microsoft Visual Studio\2022\Community\Common7\Tools\VsDevCmd.bat"
cd %~dp0
msbuild ClickOnceBuildConfiguration.sln /t:Publish /t:CopyPublishedApplication /p:Configuration=Debug /p:PublishUrl="publish\Debug\\" /p:InstallUrl="\\xxxxServer\publish_Debug\\" /p:ManifestKeyFile="ClickOnceMultipleInstallDebug.pfx" /p:ManifestCertificateThumbprint="Debug" /p:ProductName="CliclOnce テスト Debug システム" /p:PublisherName="Sorceryforce"

Problema clickoncerelease.bat (ejemplo)

call "C:\Program Files\Microsoft Visual Studio\2022\Community\Common7\Tools\VsDevCmd.bat"
cd %~dp0
msbuild ClickOnceBuildConfiguration.sln /t:Publish /t:CopyPublishedApplication /p:Configuration=Release /p:PublishUrl="publish\Release\\" /p:InstallUrl="\\xxxxServer\publish_Release\\" /p:ManifestKeyFile="ClickOnceMultipleInstallRelease.pfx" /p:ManifestCertificateThumbprint="Release" /p:ProductName="CliclOnce テスト Release システム" /p:PublisherName="Sorceryforce"

ManifestKeyFile Cada valor especifica un archivo de certificado diferente. ManifestCertificateThumbprint El valor de puede ser cualquier cosa, pero asegúrese de incluirlo porque la aplicación no se puede identificar como otra si no la pone.

Por cierto, dado que esta vez se instalan dos programas en el mismo entorno, se han agregado parámetros para que ProductName se puedan distinguir. PublisherName a tu gusto.

emitir

Después de la entrada, ejecute cada archivo por lotes y publíquelo.

Si xxxx.application está en el archivo que publicó, ábralo en un editor de texto y asegúrese de que tengapublicKeyToken un valor diferente.

instalar

Después de copiar los archivos publicados en la carpeta pública, ejecute para instalarlos setup.exe .

Si introduce el certificado en el momento de la emisión, se mostrará la siguiente pantalla en el momento de la instalación. Si se trata de un certificado de prueba, el editor no se puede confirmar, así que instálelo tal cual.

El primer programa fue instalado y lanzado.

Intentaré instalar el otro.

El otro también fue instalado y lanzado.

Por supuesto, ambos están trabajando al mismo tiempo.

ProductName Desde que se adjuntó, se muestra por separado en el menú de inicio.

También puede ver ambos en la lista de aplicaciones.