[英]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.