gpt4 book ai didi

c# - 将个性化代码嵌入到 ClickOnce setup.exe 中?

转载 作者:太空狗 更新时间:2023-10-29 21:41:23 29 4
gpt4 key购买 nike

我知道可以通过 URL 将参数传递给在线启动的 ClickOnce 应用程序。但是,大多数用户下载 setup.exe 并从他们的计算机启动它。有什么方法可以让我在下载时重新编写 setup.exe,插入代码(比如用户的电子邮件地址),然后在了解代码的情况下启动应用程序?假设我们可以以某种方式重新签署 setup.exe,使其合法。

假定 .NET 3.5。

更新 这里的目标是将电子邮件地址和/或引荐来源信息传递给 setup.exe,这样即使用户从不同的机器和不同的 ip 运行安装程序,我们也可以计算出谁做了推荐。

更新 2 使用 .NET 3.5 SP1,有帮助吗?显然,现在可以在离线时将参数传递给 .application。是否可以将参数嵌入到 setup.exe 中,以便它在运行 setup.exe 时立即调用 .application?ref=someone?

最佳答案

好吧,如果您的目标是将客户 ID(电子邮件、代码等)嵌入到 exe 中,我能想到的最简单的方法是使用 IPropertyStorageIPropertySetStorage接口(interface)。如果您够勇敢,可以通过 p/invoke 直接调用 IPropertySetStorage 上的方法。 ,或者您可以走简单的路线并使用 Microsoft 准备好的 COM 包装器,称为 dsofile.dll .

请注意,虽然 dsofile 用于办公文档,但它确实适用于任何文件 - 包括 .exe 文件 - 您只是受制于预定义的属性名称。为什么不将您的客户 ID 放入 .Comments 属性中。只需以您可以再次解析的方式进行即可。

这是一个示例:

var doc = new OleDocumentPropertiesClass();
doc.Open(pathToFile);
doc.SummaryProperties.Comments = "joe@test.com";
doc.Save();

当然,您需要先将它复制到一个临时位置,并且在用户下载它一段时间后您会想要删除它。

您可以将 dsofile.dll 与您的应用程序捆绑在一起并将其注册为依赖项,然后在您的安装程序中使用它来读取该属性。或者,如果您可以在没有它的情况下 p/调用 IPropertyStorage,那么您将没有依赖性。

要研究的另一件事是使用由 Shell32.dll 读取的扩展文件属性。我只是没能找到一种干净的方法来轻松地编写它们。如果你走这条路,请分享你是如何将属性写入你的 .exe 的。

关于c# - 将个性化代码嵌入到 ClickOnce setup.exe 中?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/7291288/

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