繁体   English   中英

如何确定ClickOnce应用程序的Web原始文件夹?

[英]How do I determine the web origin folder of a ClickOnce application?

我有一个部署为ClickOnce应用程序的C#应用​​程序。 安装文件可以位于我们的Web服务器上的三个可能的文件夹之一中:Alpha,Beta和Production。 用户在IE中找到适当的位置以启动应用程序:www.foo.com/Alpha、www.foo.com/Beta或www.foo.com/Prod。 在测试中,我们首先将安装文件复制到Alpha,然后(通过测试时)复制到Beta,然后(通过用户接受时)复制到生产。 没有重新编译。

我想知道的是C#代码在运行时是否可以通过任何方式知道它是哪个版本:Alpha,Beta或Production。 它仅基于ClickOnce安装文件所在的文件夹。请记住,没有重新编译。

有什么线索吗?

谢谢!

您可以使用自定义清单元素来执行此操作,但是这需要进行一些后生成处理。

通过打开AppName.exe.manifest文件上的文件流,然后解析XML以查找和读取自定义元素,应用程序即可访问清单文件。 清单被部署到与可执行文件相同的目录。

将应用程序文件复制到Web服务器文件夹时,只需修改清单以添加自定义元素(从技术上讲,它甚至可以是XML注释,如果您不想使用XML解析器,则可以通过简单的文本比较进行解析)。

清单(在每个文件夹中)被修改后,必须使用mage.exe签名工具对其重新签名。

您可以相当容易地使用Shell脚本自动执行此操作。 总体而言,构建不同的实际版本可能要简单得多。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM