2009-05-07 6 views

Répondre

10

Answer from MSDN par l'utilisateur Heath8041:

Sneaky pour obtenir un contrat de licence affiché pour votre application ClickOnce dans VS2005

Voici une manière détournée pour obtenir vos applications ClickOnce pour installer avec une licence d'utilisateur final accord. Fondamentalement, vous construisez un composant redistribuable qui peut être vu dans votre boîte de dialogue prerequsites sous la fenêtre de publication. Cela permet de faire en sorte que toutes vos applications réutilisent le même accord, si vous le souhaitez. C'est très simple, il suffit de créer trois fichiers ("eula.txt", "product.xml" et "package.xml") et deux dossiers dans ce cas ("EULApackage", et "en"). J'ai documenté tout ce qui suit sur la façon dont j'ai mis le mien. ça fonctionne très bien. la seule chose que vous devrez changer est le nom du composant et bien sûr vous aurez besoin de votre propre contrat de licence d'utilisateur final enregistré sous eula.txt. Le composant doit être placé dans le chemin suivant: C: \ Program Files \ Microsoft Visual Studio 8 \ SDK \ v2.0 \ BootStrapper \ Packages Dans ce dossier, vous devez voir certains sous-dossiers pour d'autres composants redistribuables. Commencez par créer un nouveau sous-répertoire pour votre composant. J'ai appelé le mien EULApackage. dans ce nouveau dossier, vous avez besoin de ce qui suit. fichier -A appelé product.xml et un sous-dossier appelé « en » (pour l'anglais) vous pouvez faire des choses différentes avec le fichier product.xml, mais voici la mine de façon ressemble

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

* dans ce cas, le fichier eula.txt était le fichier texte qui était mon contrat de licence. Notez que ce n'est pas un fichier rtf. Rtf ne s'affichera pas proprement en utilisant cette méthode.

Maintenant dans mon « en » sous-dossier i mettre le fichier eula.txt et un autre fichier xml appelé package.xml, encore une fois ce fichier XML peut être utilisé pour faire toutes sortes de choses

Heres le contenu de ma version *

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

note: tout ce que vous mettez dans le champ DisplayName est ce que votre utilisateur verra quand il est confronté avec le texte CLUF Si vous avez tout cela mis en place correctement et dans les bons dossiers, la prochaine fois que vous démarrer VS2005 et aller à votre onglet de publication -> prérequis vous devriez voir le champ DisplayName . Il suffit de vérifier cela comme une condition préalable pour votre application. Lorsque l'utilisateur clique sur installer sur le fichier publish.htm, il présentera à l'utilisateur les conents de votre fichier eula.txt dans une boîte de dialogue d'acceptation de licence standard. Si le choix d'accepter vos installations s'installe, si elles déclinent alors il sort plutôt bien et rien n'est installé sur leurs systèmes. Si vous gâcher la mise en forme ou l'autre des deux fichiers ou si vous quittez le « en » sous-dossier alors le composant ne sera pas affiché dans la boîte de dialogue des conditions préalables (lors de la publication)

Notes complémentaires: bien que Cela fonctionne très bien c'est une méthode ronde et ils sont des moyens autour de l'eula, comme si votre fichier publish.htm leur permet d'exécuter l'application directement (je suppose sans le démarrage bootstrapper), mais si ils cliquent sur le bouton d'installation, il fonctionnera . Cela a également l'avantage de ne pas s'exécuter chaque fois que vous publiez une mise à jour de votre application clickonce. Ils doivent exécuter le strapper de démarrage pour obtenir l'eula à apparaître (en cliquant sur le bouton d'installation sur publish.htm) J'ai trouvé cette méthode en regardant certains des autres composants redistribuables qui étaient déjà dans le chemin C: \ Program Fichiers \ Microsoft Visual Studio 8 \ SDK \ v2.0 \ BootStrapper \ Packages. Vous pouvez regarder dans ces autres composants les fichiers product.xml et package.xml pour voir ce qu'ils ont fait avec eux. Bonne chance

+1

parfait, I'musing Visual Studio 2008 de sorte que l'emplacement est C: \ Programmes \ Microsoft SDKs \ Windows \ v6.0A \ Bootstrapper \ Packages \ Eula – Coppermill

+0

Et dans Windows 7 64 bits, l'emplacement est C: \ Program Fichiers (x86) \ Microsoft SDKs \ Windows \ V6.0A \ BootStrapper \ Packages \ – ForeverWintr

+1

Si quelqu'un d'autre a du mal à faire fonctionner cela, lisez l'ensemble des références Shay thread pour trouver la solution complète. – ForeverWintr

1

Je ne pense pas qu'il y en ait.

Si vous déployez votre application cliquable à partir d'une page Web, vous pouvez demander à l'utilisateur d'accepter l'accord avant d'installer l'application. L'effet sera le même.

2

Pour toute personne qui essaie de faire cela fonctionnera ... J'utilise Visual Studio 2008 et liek dit Coppermill, l'emplacement est « C: \ Program Files \ Microsoft SDKs \ Windows \ v6. 0A \ \ Bootstrapper paquets \ »

je devais aussi ajouter quelques autres choses à l'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> 

Je devais aussi créer un « statu quo » exécutable sinon le elcu.txt serait ouvrir dans le bloc-notes. De toute façon, bonne chance ...

+0

Je suis aux prises avec ce problème maintenant. Comment as-tu ajouté un rien à faire? Et qu'est-ce que vous voulez dire que vous avez ajouté au product.xml? – bluebit

+0

Ignorer le commentaire sur l'ajout ... Je ne me souviens pas pourquoi je l'ai posté. En ce qui concerne l'exécutable "ne rien faire", je viens de compiler un simple programme C++ qui se ferme immédiatement. Je devais le faire car cela ouvrirait le fichier elua.txt dans le bloc-notes après l'avoir téléchargé en tant que prereq. ce qui n'est pas ce que je voulais faire. –

+0

Vous pouvez également utiliser un fichier ne rien faire .bat avec les mêmes résultats. Ex. echo "ELUA Accepted" (enregistré dans un fichier de chauve-souris)

1

Si nous utilisons Visual Studio 2010 alors nous l'avons ajouté dans le dossier "C:\Program Files\Microsoft SDKs\Windows\v7.0A\Bootstrapper\Packages". Ça fonctionne maintenant.

+0

Est-ce un travail de solution? – Sachin

0

Je poste ceci comme une réponse à la publication de Yuki Izumi. Au lieu d'utiliser un fichier de commandes, j'ai ajouté un fichier vbs vide et modifié le product.xml

<Command PackageFile="en/empty.vbs" Arguments='' > 

Ceci est une autre façon d'empêcher la eula.txt d'ouvrir sur cliquant sur Accepter. J'ai aussi essayé avec un fichier RTF. Cela affiché correctement (VS 2015).