我希望能够从另一个可执行文件启动 ClickOnce 应用程序。我知道如何使用 Process.Start(" http://PathToMyApp ") 在浏览器中执行此操作。但是,这会为进程返回 null。因此,我无法检查以确保该进程已启动或稍后终止该进程。
如何启动单击一次应用程序并获取其进程 ID 并确定其是否启动成功?
我正在使用 ClickOnce 发布我的 wpf 应用程序,但我也想对其进行混淆。
我将我的应用程序发布到本地文件夹,对其进行混淆,然后使用 mageui 放弃它,然后将其上传到我的网络服务器。
问题是,我似乎无法将我的可执行文件定义为入口点,每次我选择它时,它都会默认返回为空文件类型。
奇怪的是,即使我不混淆我的程序集并尝试按原样辞职,也会发生这种情况。我可以定义我引用的其他 dll 作为入口点(当然这不是它们的用途),但不能定义启动我的应用程序的可执行文件。
有什么建议么?
我实际上是在尝试混淆 ClickOnce 应用程序。
我的混淆器是 ConfuserEx。我遵循了以下步骤:
- 单击项目属性上的“发布向导..\立即发布”按钮。这将自动在 Debug/Release 文件夹中构建您的项目。我使用它是因为它还创建了 ClickOnce 中使用的文件。我们稍后将使用这些文件。
- 打开 Confuser 并拖放文件 在您希望 confuser 处理的 Debug/Release 文件夹中。
- 这将使用混淆的程序集创建一个 Confused 文件夹(使用默认输出目录设置)。
- 将项目运行所需的所有依赖项/文件(如果有)复制到刚刚创建的“Confused”文件夹。
- 您的项目现在应该使用混淆的程序集。我运行该程序只是为了确保。:D
- 将 .manifest 文件从 Debug/Release 文件夹复制到 Confused 文件夹并使用 MageUI 编辑它。
- 在 MageUI 的“文件”部分,找到 Confused 文件夹(可能已被选中)并选中将 .deploy 放在文件上的选项,然后单击“填充”。
- 您的项目文件将重命名为 *.deploy
- 保存 .manifest 文件并使用发布项目时创建的 *TemporaryKey.pfx 对其进行签名(这应该在您的项目文件夹中)。
- 将 .application 文件从 Debug/Release 文件夹复制到 Confused 文件夹并使用 MageUI 编辑它。
- 在 MageUI 的“应用程序参考”部分单击“选择清单..”并选择您在步骤 6 中保存的 .manifest 文件。
- 保存 .application 文件并使用 *TemporaryKey.pfx 对其进行签名。
- 最后,这可能是可选的,只需将发布文件夹中的 setup.exe 和 publish.html 文件复制到 Confused 文件夹即可。
关于这个话题:
https://confuser.codeplex.com/discussions/428378
不幸的是,当我之后尝试安装 ClickOnce 应用程序时出现以下错误:
无法处理从 …
我在测试环境中发布了单击一次应用程序,但在需要访问文件的部分中出现“找不到部分路径”异常。
Could not find a part of the path 'C:\Users\admin\AppData\Local\Apps\2.0\E65K03BT.792\Resources\file.pem'.
Run Code Online (Sandbox Code Playgroud)
我在代码中指定此路径,如下所示:
..\\..\\Resources\\file.pem
Run Code Online (Sandbox Code Playgroud)
当我从 Visual Studio 运行它时,一切都运行良好。
它仅在实际部署的应用程序上失败。
首先是简单的事情:我有一个 .net 4.7.2 clickonce winform 应用程序,它不会在 .net 4.8(Windows 更新附带)安装后立即启动。如果您卸载 .net 4.8 一切正常。当您单击.appref.ms开始菜单中的快捷方式时会发生什么,它会启动对新版本的检查,然后它就会消失。所以我检查了事件日志,它揭示了这一点:
System.Configuration.ConfigurationErrorsException
at System.Configuration.BaseConfigurationRecord.EvaluateOne(System.String[], System.Configuration.SectionInput, Boolean, System.Configuration.FactoryRecord, System.Configuration.SectionRecord, System.Object)
at System.Configuration.BaseConfigurationRecord.Evaluate(System.Configuration.FactoryRecord, System.Configuration.SectionRecord, System.Object, Boolean, Boolean, System.Object ByRef, System.Object ByRef)
at System.Configuration.BaseConfigurationRecord.GetSectionRecursive(System.String, Boolean, Boolean, Boolean, Boolean, System.Object ByRef, System.Object ByRef)
at System.Configuration.BaseConfigurationRecord.GetSectionRecursive(System.String, Boolean, Boolean, Boolean, Boolean, System.Object ByRef, System.Object ByRef)
at System.Configuration.BaseConfigurationRecord.GetSectionRecursive(System.String, Boolean, Boolean, Boolean, Boolean, System.Object ByRef, System.Object ByRef)
at System.Configuration.BaseConfigurationRecord.GetSection(System.String)
at System.Configuration.ClientConfigurationSystem.System.Configuration.Internal.IInternalConfigSystem.GetSection(System.String)
at System.Configuration.ConfigurationManager.GetSection(System.String)
at System.ServiceModel.Activation.AspNetEnvironment.GetConfigurationSection(System.String)
at System.ServiceModel.Configuration.ConfigurationHelpers.GetAssociatedSection(System.Configuration.ContextInformation, System.String)
at System.ServiceModel.Configuration.ConfigurationHelpers.GetAssociatedBindingCollectionElement(System.Configuration.ContextInformation, System.String)
at System.ServiceModel.BasicHttpsBinding.ApplyConfiguration(System.String)
at xx.xx.xx.xx.WinClient.Initialize.Execute() …Run Code Online (Sandbox Code Playgroud) 我为 Word 和 Excel 开发 VSTO 解决方案。从昨天开始,由于没有明显的原因,我现在无法调试我的任何解决方案。即使当我尝试调试新的空白 VSTO 项目时,我也会遇到相同的症状。
当加载项启动时(通常在 Excel 或 Word 启动时),将显示以下内容:
System.Security.SecurityException:此应用程序中的自定义功能将不起作用,因为用于签署 ExcelAddIn1 部署清单的证书或其位置不受信任。请联系您的管理员以获得进一步帮助。
Word 和 Excel 都会出现这种情况。我在 Windows 10 和 Office 365(即点即用版本)下从 Visual Studio 2017 进行调试。这是VS2017没有正确注册测试证书的问题吗?或者可能是我的 Windows 配置有问题(证书包含列表等)?
更新和修复Visual Studio 2017没有任何效果。安装 VS2019 并使用新的空白 Excel VSTO 插件进行测试没有任何效果。使用 EV 代码签名证书(来自 Sectigo,仍然有效且过去多次使用)发布空白加载项也会产生同样的问题。
我现在怀疑这可能是由于部署清单分区造成的。如何调查清单的注册位置及其“有效”位置?这样我就可以验证两者是否匹配。
我有一个已经发布到同一位置几年的Click Once App,我现在想要发布一个更新程序但是想将它迁移到另一个url,它是一个两步部署吗?我不想让用户更改url位置并安装了2个应用程序,有没有一种简单的方法可以做到这一点,而不是进入重定向和那种类型的东西?
在自动化ClickOnce发布过程中,我们使用Mage生成应用程序清单和MsBuild GenerateDeploymentManifest任务.
<GenerateDeploymentManifest AssemblyName="App.exe.application"
AssemblyVersion="$(AppVersion)"
Product="Application"
Install="true"
UpdateEnabled="true"
UpdateMode="Foreground"
OutputManifest="$(PrepareFolder)\App.exe.application"
MapFileExtensions="true"
EntryPoint="@(RelativeApplicationManifestFile)"
CreateDesktopShortcut="true"
MinimumRequiredVersion="$(AppVersion)"
/>
Run Code Online (Sandbox Code Playgroud)
但CreateDesktopShortcut无效,并且不会在部署清单文件中创建所需的标记.
得到这个:
<deployment install="true"
mapFileExtensions="true"
minimumRequiredVersion="2.19.13.0">
Run Code Online (Sandbox Code Playgroud)
代替
<deployment install="true"
mapFileExtensions="true"
minimumRequiredVersion="2.19.13.0"
co.v1:createDesktopShortcut="true">
Run Code Online (Sandbox Code Playgroud)
我错过了什么吗?
我正在使用VS2008 SP1 ClickOnce部署来部署应用程序.该应用程序引用一个Web服务,该服务在app.config文件中存储连接详细信息.例如,存储以下内容:
<client>
<endpoint address="http://someservice.com/someservice" binding="customBinding" bindingConfiguration="ServiceSoapBinding" contract="AService.AService" name="AServicePort" behaviorConfiguration="endPointBehavior"/>
</client>
Run Code Online (Sandbox Code Playgroud)
我需要能够在已部署的应用程序上验证此端点地址的值.我可以完全访问服务器上的每个已部署文件,但是我没有看到对任何app.config条目的引用.
app.config设置存储在已发布数据中的哪些位置以及如何访问它们?
亲切的问候,
F.
我有通过ClickOnce部署的WinForms应用程序.我有使用SignTool签署程序集的Post Build Event.我将应用程序发布为ClickOnce安装程序,我在VS输出中看到文件已签名,但在安装后没有签名的程序集.我如何签署将包含在ClickOnce包中的程序集?
clickonce ×10
c# ×7
.net ×2
.net-4.8 ×1
app-config ×1
code-signing ×1
msbuild ×1
msbuild-task ×1
obfuscation ×1
signing ×1
signtool ×1
vsto ×1
wpf ×1