¿Es posible crear una implementación ClickOnce, para una aplicación Win Form, para solicitar al usuario que acepte un acuerdo de licencia antes de continuar?Haga clic para solicitar un acuerdo de licencia
Respuesta
Answer from MSDN por usuario Heath8041:
manera disimulada para conseguir una EULA está representada para su aplicación ClickOnce en VS2005
Aquí está una manera indirecta para obtener sus aplicaciones ClickOnce para instalar con una licencia de usuario final acuerdo. Básicamente se crea un componente redistribuible que se puede ver en el cuadro de diálogo de prerrequisitos debajo de la ventana de publicación. Esto permite una buena manera de que todas tus aplicaciones reutilicen el mismo acuerdo, si quieres. Es muy fácil, solo necesita crear tres archivos ("eula.txt", "product.xml" y "package.xml") y dos carpetas en este caso ("EULApackage" y "en"). Documenté todo a continuación sobre cómo configuré el mío. funciona genial lo único que tendrá que cambiar es el nombre del componente y, por supuesto, necesitará su propio acuerdo de licencia de usuario final guardado como eula.txt. El componente debe colocarse en la siguiente ruta: C: \ Archivos de programa \ Microsoft Visual Studio 8 \ SDK \ v2.0 \ BootStrapper \ Packages En esta carpeta, debería ver algunas subcarpetas para otros componentes redistribuibles. Primero crea un nuevo subdirectorio para tu componente. Llamé al mío EULApackage. en esta nueva carpeta necesita lo siguiente. -A archivo llamado product.xml y una sub carpeta llamada "en" (para Inglés) puede hacer varias cosas con el archivo product.xml, pero aquí es la forma en la mina se ve
<?xml version="1.0" encoding="utf-8" ?>
<Product
xmlns="http://schemas.microsoft.com/developer/2004/01/bootstrapper"
ProductCode="EULA.Bootstrap.Component"
>
<!-- Defines list of files to be copied on build -->
<PackageFiles>
<PackageFile Name="en/eula.txt"/>
</PackageFiles>
<Commands>
<Command PackageFile="en/eula.txt"
Arguments='' >
<ExitCodes>
<DefaultExitCode Result="Fail" FormatMessageFromSystem="true" String="GeneralFailure" />
</ExitCodes>
</Command>
</Commands>
</Product>
* en este caso el archivo eula.txt era el archivo de texto que era mi acuerdo de licencia. Tenga en cuenta que no es un archivo rtf. Rtf no mostrará adecuadamente usando este método.
Ahora dentro de mi subcarpeta "en" Puse el archivo eula.txt y otro archivo XML llamado package.xml, de nuevo este archivo XML se puede utilizar para hacer todo tipo de cosas
heres el contenido de mi versión *
<?xml version="1.0" encoding="utf-8" ?>
<Package
xmlns="http://schemas.microsoft.com/developer/2004/01/bootstrapper"
Name="DisplayName"
Culture="Culture"
LicenseAgreement="eula.txt">
<PackageFiles>
<PackageFile Name="eula.txt"/>
</PackageFiles>
<!-- Defines a localizable string table for error messages and url's -->
<Strings>
<String Name="DisplayName">Texas Instruments End User License Agreement</String>
<String Name="Culture">en</String>
<String Name="CancelFailure">User Failed to Accept Texas Instruments End User License Agreement.</String>
<String Name="GeneralFailure">A fatal error occurred during the installation of ELUA Component Execution</String>
<String Name="AdminRequired">You do not have the permissions required to install this application. Please contact your administrator.</String>
</Strings>
</Package>
Nota: lo que pones en el campo DisplayName es lo que va a ver a su usuario cuando es confrontado con el texto EULA Si usted tiene todo esto montado correctamente y en las carpetas adecuadas, la próxima vez que inicie VS2005 y vaya a la pestaña de publicación -> requisitos previos, debería ver el campo DisplayName . Simplemente verifique esto como un requisito previo para su aplicación. cuando el usuario hace clic en instalar en el archivo publish.htm presentará al usuario los conatos de su archivo eula.txt dentro de un cuadro de diálogo de aceptación de licencia estándar. si eliges aceptar tus instalaciones de cosas, si se rechazan, sale bastante bien y no hay nada instalado en sus sistemas. Si se equivoca el formato de cualquiera de los dos archivos o si dejar de lado la subcarpeta "en" entonces el componente no se mostrará en el diálogo de requisitos previos (al publicar)
Notas adicionales: aunque esto funciona muy bien, es una ronda de método y sus formas son alrededor de la eula, como si su archivo publish.htm les permite ejecutar la aplicación directamente (supongo que sin el arranque) pero si hacen clic en el botón de instalación se ejecutará . Esto también tiene la ventaja de no ejecutarse cada vez que publica una actualización de su aplicación de clickonce. Deben ejecutar la correa de arranque para que se muestre la eula (haciendo clic en el botón de instalación en publish.htm) Descubrí este método mirando algunos de los otros componentes redistribuibles que ya estaban en la ruta C: \ Program Archivos \ Microsoft Visual Studio 8 \ SDK \ v2.0 \ BootStrapper \ Packages. Puede buscar en esos otros componentes los archivos product.xml y package.xml para ver qué cosas geniales han hecho con ellos. Buena suerte
perfecto, estoy usando Visual Studio 2008 así que la ubicación es C: \ Archivos de programa \ Microsoft SDKs \ Windows \ v6.0A \ Bootstrapper \ Packages \ Eula – Coppermill
Y en Windows 7 64 bit, la ubicación es C: \ Program Archivos (x86) \ Microsoft SDKs \ Windows \ V6.0A \ BootStrapper \ Packages \ – ForeverWintr
Si alguien más está luchando para que esto funcione, lea todo el hilo de referencias de Shay para encontrar la solución completa. – ForeverWintr
No creo que exista.
Si implementa su aplicación de un clic desde una página web, puede hacer que el usuario acepte el acuerdo allí antes de instalar la aplicación. El efecto será el mismo.
Para cualquier persona que está tratando de hacer esto va a funcionar ... Estoy utilizando Visual Studio 2008 y liek Coppermill dicho, la ubicación es "C: \ Archivos de programa \ Microsoft SDKs \ Windows \ v6. 0A \ Bootstrapper \ Packages \"
también tuve que añadir un par de cosas a la product.xml:
<?xml version="1.0" encoding="utf-8" ?>
<Product
xmlns="http://schemas.microsoft.com/developer/2004/01/bootstrapper"
ProductCode="EULA.Bootstrap.Component"
>
<!-- Defines list of files to be copied on build -->
<PackageFiles CopyAllPackageFiles="false">
<PackageFile Name="en/Empty.exe"/>
</PackageFiles>
<Commands>
<Command PackageFile="en/Empty.exe" Arguments='/silent' >
<ExitCodes>
<ExitCode Value="0" Result="Success"/>
<DefaultExitCode Result="Fail" FormatMessageFromSystem="true" String="GeneralFailure" />
</ExitCodes>
</Command>
</Commands>
</Product>
también tuve que crear un "nada de nada" de lo contrario el ejecutable elcu.txt haría abrir en el bloc de notas. De todos modos, buena suerte ...
Estoy luchando con este problema ahora. ¿Cómo agregaste un exe de no hacer nada? ¿Y qué quiere decir que agregó al producto.xml? – bluebit
Ignora el comentario sobre la adición de ... No puedo recordar por qué lo publiqué. En cuanto al ejecutable "no hacer nada" acabo de compilar un programa simple de C++ que se cierra inmediatamente. Tenía que hacer esto porque abriría el elua.txt en el bloc de notas después de descargarlo como un pre-requisito. que no es lo que yo quería que sucediera –
También podría usar un archivo .bat no hacer con los mismos resultados. Ej. echo "ELUA Aceptado" (guarda en un archivo bat)
Si usamos Visual Studio 2010, entonces lo agregamos en la carpeta "C:\Program Files\Microsoft SDKs\Windows\v7.0A\Bootstrapper\Packages"
. Ahora funciona.
¿Funciona la solución? – Sachin
Estoy publicando esto como respuesta a la publicación de Yuki Izumi. En lugar de utilizar un archivo por lotes, he añadido un archivo vbs vacía y modificado el product.xml a
<Command PackageFile="en/empty.vbs" Arguments='' >
Ésta es otra manera de prevenir la eula.txt de la apertura al hacer clic en Aceptar. También probé con un archivo rtf. Eso se muestra correctamente (VS 2015).
- 1. Agregar acuerdo de licencia en el paquete RPM
- 2. Acuerdo de licencia comunitaria para software comercial (SaaS)?
- 3. acuerdo de licencia incluido en el archivo .deb
- 4. WIX: cómo cambiar el acuerdo de licencia durante la instalación
- 5. Javafx 2 haga clic y haga doble clic
- 6. jQuery en vivo ('clic') de disparo para haga clic con
- 7. Haga clic para editar en Silverlight
- 8. Haga clic en un botón en Scrapy
- 9. ¿Cómo agrego un acuerdo de licencia a un instalador de aplicaciones de AIR?
- 10. Ext Js: haga clic en un botón
- 11. Haga clic en un botón cada segundo
- 12. mecanizar Python haga clic en un botón
- 13. Mostrando un menú emergente en QGraphicsScene, haga clic o haga clic con el botón derecho
- 14. jquery - desactivar haga clic en
- 15. Haga clic derecho en JButton
- 16. TabPage Haga clic en Eventos
- 17. Haga clic hasta la implementación
- 18. Qué cambios hay en el "Acuerdo de licencia del programa para desarrolladores de iPhone"
- 19. Haga clic derecho en JavaFX?
- 20. Jquery Retardo Después Haga clic
- 21. Enlace UIWebView Haga clic en
- 22. jQuery: llamada, haga clic en(); de otro clic();
- 23. archivo de entrada Haga clic en Chrome
- 24. Respaldo de Blackberry haga clic en
- 25. Haga clic en el evento de opción
- 26. jqGrid Edición de celdas: haga doble clic para editar?
- 27. Detectar anuncios de Google haga clic en
- 28. Haga clic en O, y luego haga algo
- 29. detectar haga clic dentro de iframe
- 30. Haga clic en Evento de hipervínculo
Sí, por qué no se usa. – Sachin