gpt4 book ai didi

deployment - 如何为 ClickOnce 应用程序设置 LARGEADRESAWARE?

转载 作者:行者123 更新时间:2023-12-04 02:04:29 25 4
gpt4 key购买 nike

我一直在努力解决这个问题。我有一个使用大量内存的应用程序,并且真的会从 LargeAddressAware 中受益。

问题简而言之:使用 LAA 标志,应用程序将无法启动。

实验结果:

1)我有一个发布脚本,它运行整个 ClickOnce 发布,然后对可执行文件和 dll 重新签名,然后重新创建 list ,对其进行签名等

2)运行脚本给了我一个安装和运行良好的应用程序

3) 将此添加到后期构建会破坏应用程序:

editbin /LARGEADDRESSAWARE <path>/obj/Publish/app.exe

(是的,我知道,我们有一个名为 Publish 的构建配置 - 愚蠢的 - 但有效......)

我得到的错误信息是:

激活\betabox\appbeta\app.application 导致异常。
检测到以下失败消息:

+ 强名称签名对此程序集 app.exe 无效。

我的 list 和 exe 都由有效的代码签名证书签名。当标志没有设置时,脚本工作正常。

我也试过不使用我的脚本,在构建后和通过 VS 发布时只使用 editbin 命令 - 同样的错误。

那么 - 发布一个通过 ClickOnce 设置了 LARGEADRESAWARE 的应用程序是完全不可能的吗?

谢谢!

最佳答案

解决了!

在 ClickOnce 论坛中获得 Kira 的帮助:http://social.msdn.microsoft.com/Forums/en-US/winformssetup/thread/b008087c-45f8-4de6-b8f5-f34fddb29c8c/?prof=required

解决方案:
在设置 LAA 标志后,必须使用新的强名称重新签署 EXE。

如何做到这一点:
在后期构建中,标志由以下设置:

cd $(ProjectDir)
editbin /LARGEADDRESSAWARE obj/$(ConfigurationName)/app.exe

之后,同样在后期构建中,必须对 exe 重新签名:
sn -Ra obj\$(ConfigurationName)\app.exe PublicPrivateKeyFile.snk

这当然是假设 PublicPrivateKeyFile.snk 是代码签名 key 并且在 Visual Studio 项目的路径中。

我的问题是我在构建后使用以下命令重新签名所有 dll/exes:
for /R %BIN_DIR% %%f in (*.dll) do signtool sign /a /i "Thawte" /t http://timestamp.verisign.com/scripts/timstamp.dll "%%f"
for /R %BIN_DIR% %%f in (*.exe) do signtool sign /a /i "Thawte" /t http://timestamp.verisign.com/scripts/timstamp.dll "%%f"

但这不会更新强名称,只是按原样对 exe 进行签名。

希望这可以帮助某人!

关于deployment - 如何为 ClickOnce 应用程序设置 LARGEADRESAWARE?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/1496606/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com