2009-05-07 7 views

Respuesta

10

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

+1

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

+0

Y en Windows 7 64 bit, la ubicación es C: \ Program Archivos (x86) \ Microsoft SDKs \ Windows \ V6.0A \ BootStrapper \ Packages \ – ForeverWintr

+1

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

1

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.

2

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 ...

+0

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

+0

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 –

+0

También podría usar un archivo .bat no hacer con los mismos resultados. Ej. echo "ELUA Aceptado" (guarda en un archivo bat)

1

Si usamos Visual Studio 2010, entonces lo agregamos en la carpeta "C:\Program Files\Microsoft SDKs\Windows\v7.0A\Bootstrapper\Packages". Ahora funciona.

+0

¿Funciona la solución? – Sachin

0

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).

Cuestiones relacionadas