我已经创建了一个WPF应用程序,并使用外部工具对主.exe进行了模糊处理。
现在我无法将其作为ClickOnce应用程序发布,因为Visual Studio不知何故再次重新编译主要的可执行文件。
我在解决方案→配置管理器下停用了构建复选框,但它不起作用:当我将应用程序发布到http://localhost/MyApplication
时,可执行文件仍在重建是否有可能部署我的ClickOnce应用程序而不重新编译当前项目?
如果没有办法,是否有免费工具生成具有特定所需文件的ClickOnce应用程序?
答案 0 :(得分:7)
免责声明:我为Dotfuscator的制造商PreEmptive Solutions工作。
与Jared的解决方案的问题是,后生成任务执行为时已晚在构建过程中的ClickOnce的建立步骤中创建的清单(包括装配签名,这模糊的变化)后生成大火不久。您可以破解的MSBuild文件(.csproj的你/ .vbproj)文件来调用AfterCompile步骤混淆的任务,并有混淆转储混淆组件到建立bin目录,但是这是一种痛苦。
一个第二替代是使用法/ MageUI工具来重新创建的ClickOnce体现由发布应用,模糊处理的组件,与所述模糊版本重写公布组件,然后运行法师重新创建清单如图{{3} }。 Mage实用程序的文档是here。
第三种选择是你的混淆器是Dotfuscator Professional版本4.6.1010或更高版本。 Dotfuscator能够直接读取ClickOnce部署清单作为输入,对程序集进行模糊处理并输出模糊处理程序集和完全更新的清单文件。请参阅here作为起点。
答案 1 :(得分:2)
仅供参考,这是在Visual Studio 2010中处理的。
与此同时,您必须发布到文件夹,对程序集进行模糊处理,并使用Mage或MageUI重新签名部署。这是因为ClickOnce对程序集进行哈希处理,当您对它们进行模糊处理时,它会更改哈希值,并且它们不再与清单中的信息匹配。
RobinDotNet
答案 2 :(得分:1)
我不完全理解为什么ClickOnce有这种明显的行为。但是,您应该能够通过将混淆步骤插入构建系统来解决此问题。尝试定义一个后期构建任务,该任务针对EXE / DLL运行混淆器。由于这将作为构建的一部分运行,因此ClickOnce将选择是否进行模糊的DLL重建。
它还可以省去手动运行它的麻烦:)
答案 3 :(得分:0)
我的公司编写了一个名为ClickOnceMore的软件,非常适合这种情况。 ClickOnceMore是ClickOnce工具,可用于将ClickOnce自动化为大型构建过程的一部分。
使用文件包含规则,您可以在ClickOnceMore项目中包含模糊处理程序集,然后使用ClickOnceMore命令行工具构建ClickOnce清单。
我们的许多客户使用ClickOnceMore构建具有混淆程序集的ClickOnce清单。您可以在www.clickoncemore.net找到该软件。