Clickonce要求签署许可协议

时间:2009-05-07 11:12:34

标签: winforms clickonce

是否可以为Win Form应用程序构建ClickOnce部署,以便在继续之前要求用户同意许可协议?

6 个答案:

答案 0 :(得分:11)

用户Answer from MSDN

Heath8041

在VS2005中为您的clickonce应用程序显示EULA的偷偷摸摸的方法

以下是关于使用最终用户许可协议安装clickonce应用程序的方法。 基本上,您构建了一个可再发布的组件,可以在发布窗口下的prerequsites对话框中看到。如果您愿意,这可以让您的所有应用重用相同的协议。 这很简单,你只需创建三个文件(“eula.txt”,“product.xml”和“package.xml”)和两个文件夹(“EULApackage”和“en”)。我在下面记录了我如何设置我的一切。它很棒。您唯一需要更改的是组件的名称,当然您需要将自己的最终用户许可协议保​​存为eula.txt。 该组件需要放在以下路径中: C:\ Program Files \ Microsoft Visual Studio 8 \ SDK \ v2.0 \ BootStrapper \ Packages 在此文件夹中,您应该看到其他可再发行组件的一些子文件夹。首先为组件创建一个新的子目录。我打电话给我的EULApackage。 在这个新文件夹中,您需要以下内容。 - 一个名为product.xml的文件和一个名为“en”的子文件夹(英文) 你可以使用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>
    <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>

*在这种情况下,文件eula.txt是我的许可协议的文本文件。请注意,它不是rtf文件。 Rtf不会使用此方法显示属性。

现在在我的“en”子文件夹中,我将eula.txt文件和另一个名为package.xml的xml文件放在一起,再次将此xml文件用于执行各种操作

继承我的版本*

的内容
 <?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>

注意:您在DisplayName字段中输入的内容是您的用户在面对eula文本时会看到的内容 如果您已将所有这些正确放在正确的文件夹中,则下次启动VS2005并转到发布标签时 - &gt;先决条件,您应该看到DisplayName字段。只需将此作为您应用的先决条件。 当用户在publish.htm文件上单击“安装”时,它将向用户显示标准许可证接受对话框中的eula.txt文件的标记。如果选择接受你的东西安装,如果他们拒绝然后它退出相当不错,他们的系统上没有安装任何东西。 如果您弄乱了两个文件中的任何一个的格式,或者如果省略“en”子文件夹,那么该组件将不会出现在先决条件对话框中(发布时)

附加说明:虽然这很有效,但它是一个圆形的方法,它们是eula的方法,例如,如果你的publish.htm文件允许它们直接运行应用程序(我想没有启动引导程序)但如果他们单击安装按钮,它将运行。 每次向clickonce应用程序发布更新时,这也具有不运行的优点。他们必须运行引导过滤器以显示eula(通过单击publish.htm上的安装按钮) 我通过查看已经在路径C:\ Program Files \ Microsoft Visual Studio 8 \ SDK \ v2.0 \ BootStrapper \ Packages中的一些其他可再发行组件来找出此方法。您可以查看其他组件的product.xml和package.xml文件,看看他们用它们做了什么很酷的事情。  祝你好运

答案 1 :(得分:2)

对于任何试图这样做的人都会工作......我正在使用Visual Studio 2008和谎言Coppermill说,位置是“C:\ Program Files \ Microsoft SDKs \ Windows \ v6.0A \ Bootstrapper \ Packages \“

我还必须在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>

我还必须创建一个“Do nothing”可执行文件,否则elcu.txt会在记事本中打开。祝你好运......

答案 2 :(得分:1)

我认为没有。

如果您从网页部署点击一次应用,则可以让用户在安装应用之前接受协议。效果会一样。

答案 3 :(得分:1)

如果我们使用Visual Studio 2010,那么我们将其添加到"C:\Program Files\Microsoft SDKs\Windows\v7.0A\Bootstrapper\Packages"文件夹中。它现在有效。

答案 4 :(得分:0)

I am posting this as a reply to Yuki Izumi's post. Instead of using a batch file, I added an empty vbs file and modified the product.xml to

MediaPlayer

This is another way to prevent the eula.txt from opening up on clicking Accept. I also tried with an rtf file. That displayed properly (VS 2015).

答案 5 :(得分:0)

您可以在此处检查通用引导程序路径:

Computer\HKEY_LOCAL_MACHINE\SOFTWARE\WOW6432Node\Microsoft\GenericBootstrapper

MSDN:https://docs.microsoft.com/en-us/visualstudio/deployment/creating-bootstrapper-packages?view=vs-2017