是否可以为Win Form应用程序构建ClickOnce部署,以便在继续之前要求用户同意许可协议?
答案 0 :(得分:11)
在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