在Win Form应用程序中,是否可以构建ClickOnce部署,要求用户在继续之前同意许可协议?
来自 MSDN 的答案 由用户 Heath8041 提供:
在 VS2005 中获取您的 ClickOnce 应用程序显示 EULA 的巧妙方法
这是一种获取终端用户许可协议的单击安装应用程序的迂回方法。 基本上,您需要构建一个可重复使用的分发组件,该组件可以在发布窗口下的先决条件对话框中看到。这样可以很好地实现所有应用程序重用相同的协议。 非常简单,您只需要创建三个文件("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>
<?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>
如果有人想要这样做,它会起作用……我正在使用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>
我还得创建一个“无操作”可执行文件,否则elcu.txt会在记事本中打开。祝你好运...
我认为没有这样的方法。
如果您从网页部署单击启动应用程序,您可以要求用户在安装应用程序之前接受该协议。效果将是相同的。
"C:\Program Files\Microsoft SDKs\Windows\v7.0A\Bootstrapper\Packages"
文件夹中。现在它可以工作了。你可以在这里检查通用启动程序路径:
Computer\HKEY_LOCAL_MACHINE\SOFTWARE\WOW6432Node\Microsoft\GenericBootstrapper
<Command PackageFile="en/empty.vbs" Arguments='' >
这是另一种防止在单击“接受”时打开eula.txt的方法。我还尝试了使用rtf文件,它可以正确显示(VS2015)。