是否可以混淆在 Visual Studio 2008 中创建的 ClickOnce 应用程序?

发布于 2024-08-20 13:42:53 字数 376 浏览 3 评论 0原文

我创建了一个 WPF 应用程序,并使用外部工具混淆了主 .exe。

现在,我无法将其发布为 ClickOnce 应用程序,因为 Visual Studio 以某种方式再次重新编译主可执行文件。

我停用了“解决方案”→“配置管理器”下的构建复选框,但它不起作用:当我将应用程序发布到 http 时,可执行文件不断被重建://localhost/MyApplication

是否可以在不重新编译当前项目的情况下部署我的 ClickOnce 应用程序?

如果这不行,是否有免费工具可以生成具有特定所需文件的 ClickOnce 应用程序?

I've created a WPF application and obfuscated the main .exe with an external tool.

Now I'm having trouble to publish it as a ClickOnce application, because Visual Studio somehow is recompiling again the main executable.

I deactivated the build checkboxes under Solution → Configuration manager, but it didn't work: the executable keeps being rebuilt when I publish the application to http://localhost/MyApplication

Is it possible to deploy my ClickOnce application without recompiling the current project?

If that's no way, is there a free tool to generate a ClickOnce application with specific desired files?

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(4

や莫失莫忘 2024-08-27 13:42:53

免责声明:我在 Dotfuscator 的制造商 PreEmptive Solutions 工作。

Jared 解决方案的问题在于,后期构建任务在构建过程中执行得太晚,因为 ClickOnce 构建步骤在后期构建触发之前很久就创建了清单(包括程序集签名,其中的混淆发生了变化)。您可以破解 MSBuild 文件(您的 .csproj/.vbproj)文件以在 AfterCompile 步骤中调用混淆任务,并让混淆器将混淆的程序集转储到构建 bin 目录中,但这很痛苦。

第二种选择是使用 Mage/MageUI 工具重新创建 ClickOnce 清单,方法是发布应用程序、混淆程序集、用混淆版本覆盖已发布的程序集,然后运行 ​​Mage 来重新创建清单,如下所示 此处。 Mage 实用程序的文档位于此处

第三种选择是如果您的混淆器是 Dotfuscator Professional 版本 4.6.1010 或更高版本。 Dotfuscator 能够直接读取 ClickOnce 部署清单作为输入、混淆程序集并输出混淆的程序集和完全更新的清单文件。请参阅此处作为起点。

Disclaimer: I work for PreEmptive Solutions, the makers of Dotfuscator.

The issue with Jared's solution is that a post build task executes too late in the build process as the ClickOnce build steps create the manifests (including assembly signatures, which obfuscation changes) long before the post build fires. You can hack the MSBuild file (your .csproj/.vbproj) file to call the obfuscation task in the AfterCompile step and have the obfuscator dump the obfuscated assemblies into the builds bin directory but this is a pain.

A second alternative is to use the Mage/MageUI tools to recreate the ClickOnce manifests by publishing your application, obfuscating the assemblies, overwriting the published assemblies with the obfuscated versions and then running Mage to recreate the manifests as shown here. Documentation for the Mage utility is here.

A third alternative is if your obfuscator is Dotfuscator Professional edition version 4.6.1010 or higher. Dotfuscator has the ability to directly read a ClickOnce deployment manifest as an input, obfuscate the assemblies and output both the obfuscated assemblies and fully updated manifest files. See here for a starting point.

你怎么这么可爱啊 2024-08-27 13:42:53

我不太明白为什么 ClickOnce 有这种明显的行为。但是,您应该能够通过将混淆步骤插入构建系统来解决此问题。尝试定义一个针对 EXE/DLL 运行混淆器的构建后任务。由于这将作为构建的一部分运行,因此 ClickOnce 将选择是否选择混淆的 DLL 重建。

它还可以省去您手动运行它的麻烦:)

I don't exactly understand why ClickOnce has this apparent behavior. However you should be able to work around this by inserting the obfuscation step into the build system. Try defining a post build task which runs the obfuscator against the EXE / DLL. Since this will run as part of the build, ClickOnce will pick up the obfuscated DLL rebuild or not.

It will also save you the trouble of running it manually :)

绮筵 2024-08-27 13:42:53

仅供参考,这是在 Visual Studio 2010 中处理的。

同时,您必须发布到文件夹、混淆程序集,并使用 Mage 或 MageUI 重新签署部署。这是因为 ClickOnce 对程序集进行哈希处理,当您对它们进行混淆时,它会更改哈希值,并且它们不再与清单中的信息匹配。

罗宾点网

Just FYI, this is handled in Visual Studio 2010.

In the meantime, you have to publish to a folder, obfuscate the assemblies, and re-sign the deployment using either Mage or MageUI. This is because ClickOnce hashes the assemblies, and when you obfuscate them, it changes the hashes, and they no longer match the information in the manifest.

RobinDotNet

赠佳期 2024-08-27 13:42:53

我的公司编写了一款名为 ClickOnceMore 的软件,它非常适合这种情况。 ClickOnceMore 是 ClickOnce 工具,可用于自动化 ClickOnce 作为大型构建过程的一部分。

使用文件包含规则,您可以将混淆的程序集包含在 ClickOnceMore 项目中,然后使用 ClickOnceMore 命令行工具构建 ClickOnce 清单。

我们的许多客户使用 ClickOnceMore 来构建带有混淆程序集的 ClickOnce 清单。您可以在 www.clickoncemore.net 找到该软件。

My company writes a piece of software called ClickOnceMore which is ideal for this scenario. ClickOnceMore is ClickOnce tool which can be used for automating ClickOnce as part of a large build process.

Using file inclusion rules you can include your obfuscated assemblies in the ClickOnceMore project and then build the ClickOnce manifests using the ClickOnceMore Command Line Tool.

Many of our customers use ClickOnceMore to build ClickOnce manifests with obfuscated assemblies. You can find the software at www.clickoncemore.net.

~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文