如何使用一个ClickOnce部署发布多个应用程序/进程?

6
我需要一个具有管理员权限的进程。从这个问题和答案中,似乎没有比启动一个单独的进程更好的方法。既然我宁愿将一个进程专门用于此目的,而不只是启动我的原始应用程序来运行这个方法—所以我想我只需在VS2010中创建一个解决方案中的两个项目即可。但是,尝试部署时,似乎一次只能发布其中一个。这样做不行,因为我不希望客户安装多个应用程序—还会出现查找相对路径等问题。
我不想将两个进程作为启动应用程序。我希望其中一个成为启动应用程序,并调用(如果需要)第二个进程来运行一个方法。
那么如何在一个ClickOnce安装中拥有两个进程呢?
2个回答

11

你需要从第一个(主要)项目中引用第二个(工作)项目,然后,如果你进入第一个项目的属性->发布->应用程序文件,你应该已经看到第二个exe文件已经作为依赖项出现了。如果没有 - 只需将“发布状态”下拉菜单设置为“包括”即可。

另外 - 我不确定你的目标是什么,但请查看我的这篇帖子:强制应用程序具有管理员权限 - 调用ClickOnce应用程序中的带有管理员权限的应用程序的类似问题。可能会节省你几分钟。


这会创建两个桌面图标吗? - Zachary Canann
@ZacharyCanann 没错,只有一个。 - avs099
这个不行。是的,第二个可执行文件在那里,甚至已经发布了,但是在已发布应用程序的应用程序文件子目录中没有.deploy文件,所以第二个可执行文件从未被安装。 - Martin Braun

3
如果您不希望用户安装多个应用程序,则不应该使用多个ClickOnce部署。您真正需要的是一个部署。所以ClickOnce应用程序需要成为主要应用程序,并且需要在ClickOnce部署中包含来自辅助应用程序的exe文件。我会按照以下方法操作:
将exe文件复制到ClickOnce项目中,将构建操作设置为“content”,将“copy-to-output-directory”设置为“copy always”。然后进行构建并检查发布属性中的应用程序文件对话框,确保它显示出来。
现在,如果您可以构建解决方案并构建两个项目,请确保先构建创建exe文件的项目。然后向ClickOnce项目添加一个后构建命令,将其从第一个项目的输出目录复制到第二个项目的输出目录。
它将先构建第一个项目,然后构建C / O项目(并将ClickOnce项目版本的exe复制到输出目录),然后再将其他项目中最新版本的exe从其他项目复制到ClickOnce项目的输出目录,然后再创建部署。
我不是msbuild专家,但后构建命令可能类似于这样。
COPY/Y "$(ProjectDir)....\otherproject\bin\release\mynew.exe" "$TargetDir)\mynew.exe"
这将从当前项目复制,向上两级,到其他项目,然后进入bin文件夹,然后进入release文件夹+ mynew.exe,并将其复制到构建输出目录。我无法确切地将目录结构设置为其他项目 - 您需要自己设置。但这给您提供了大致的想法。

谢谢。看起来很有前途。 - ispiro
如果您的其他可执行文件有更多需要复制到输出目录的文件,那么维护起来会变得混乱。这对于更大的项目来说并不是一个解决方案。 - Martin Braun

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接