Bug*_*ter 12 .net deployment url clickonce
我有一个ClickOnce应用程序,我需要能够将URL参数传递给它.例如,用户可以单击"http://foo.bar/MyApp.application?flavor=grape"形式的URL,这将启动我的应用程序,将"?flavor = grape"查询传递给它.
不幸的是,看起来这只适用于IE开箱即用.在Firefox和Chrome上,用户必须安装附加组件才能使ClickOnce部署正常运行.我的用户在限制性企业环境中工作,不允许安装任何附加组件或其他任何东西(ClickOnce确实适用于他们).那么,我该怎么办?
我能想到的一个hack是将我的应用程序注册为文件处理程序,用于一些足够独特的文件扩展名,例如".bugmaster".然后 - 或者我的理论去了 - 我可以让我的网络服务器生成一个名为"flavor_grape.bugmaster"的文件; 用户将单击指向该文件的URL,然后选择"运行"而不是"保存",这将启动我的应用程序,然后他将解析URL参数的文件名.不幸的是,这种方法也不起作用.当从本地文件系统打开"flavor_grape.bugmaster"文件时,它完全正常,但由于某种原因,当用户尝试从浏览器打开文件时,这不起作用.
有没有人有任何其他想法?
Mar*_*ill 12
ClickOnce有一个非常小的技巧,你可以直接将参数编码到setup.exe使用的URL中.例如,要创建包含"flavor = grape"参数的setup.exe,可以从命令行运行以下命令:
copy setup.exe setup-for-grape.exe
setup.exe -url="http://foo.bar/MyApp.application?flavor=grape" /dest=setup-for-grape.exe
Run Code Online (Sandbox Code Playgroud)
这使用未记录的/ dest标志将结果输出到setup-for-grape.exe文件,而不是修改原始setup.exe.执行此操作后,setup-for-grape.exe将指向您的URL 并包含您的flavor = grape参数.请注意,如果您使用的是签名,则需要对setup.exe 的未签名副本执行此操作,然后在签名时对其进行签名.
如果可能的参数选择数量相当有限,您可以为它们生成setup.exe,并从您的网站链接到它们.
另一方面,如果有无限数量的选择,您可以设置一个Web服务,该服务接收一些参数,生成一个带有编码所需参数的setup.exe,然后将其反馈给客户端.我已经使用此方法为连接到特定服务器的客户端生成setup.exe - 客户端安装URL具有编码在其中的服务器连接信息,因此当安装客户端时,它会自动知道要连接到哪个服务器.
当然,如果您不想使用setup.exe,或者您的限制性企业环境不允许使用它,那么所有这些都会直接显示在窗口之外.但希望你会发现它很有用,或至少提供信息.
归档时间: |
|
查看次数: |
5155 次 |
最近记录: |