Tag: clickonce

在clickonce应用程序中安全地存储服务帐户凭据

我正在编写一个ClickOnce应用程序,它运行带有服务帐户凭据的批处理文件进程。 我需要存储服务帐户凭据,以便程序可以在运行进程之前将用户名/密码添加到process.startinfo属性中。 用户不知道此密码,因此没有提示他们输入密码。 我相信这意味着我无法存储哈希并以这种方式validation密码,我生成的哈希值必须是可逆的,以便它可以将正确的密码添加到startinfo属性。 我在这个网站上搜索并提出了一个可行的Frankenstein类型的解决方案,但它不是很安全。 目前,我使用此方法加密密码,存储加密值,然后使用decrypt方法在运行时获取密码(加密方法在运行时从不运行,我在调试期间在Visual Studio中运行它,复制值,然后在下面的解密方法中使用该值): // used to generate decrypted acct creds private void EncryptText(string plaintext) { string outsrt = null; RijndaelManaged aesAlg = null; try { // generate key from secret and salt Rfc2898DeriveBytes key = new Rfc2898DeriveBytes(sharedsecret, _salt); aesAlg = new RijndaelManaged(); aesAlg.Key = key.GetBytes(aesAlg.KeySize / 8); ICryptoTransform encryptor = aesAlg.CreateEncryptor(aesAlg.Key, […]

ClickOnce应用程序安装 – 安全警告

我有一个部署在网站上的clickonce应用程序(例如, http://example.com ),用户将从该网站下载我发布的应用程序的setup.exe文件,并在他们的计算机上安装该应用程序。 我已经使用GoDaddy为我的公司颁发的证书签署了我的申请的ClickOnce清单。 但是,用户在尝试安装我的应用程序时仍会收到以下应用程序安全警告。 有没有办法让这个安全警告根本不显示? 任何帮助将不胜感激。

WPF – 如何以编程方式备份​​/还原LocalDB – ClickOnce

我有一个应用程序使用EF和LocalDB作为它的数据库,由ClickOnce发布。 这是我第一次使用LocalDB,我不知道如何添加一个function到我的应用程序以编程方式备份​​/恢复数据库。 ClickOnce安装的我的应用程序路径: C:\Users\Mahdi Rashidi\AppData\Local\Apps\2.0\NOL11TLW.9XG\CZM702AQ.LPP\basu..tion_939730333fb6fcc8_0001.0002_fd707bbb3c97f8d3 这是数据库文件安装的位置: C:\Users\Mahdi Rashidi\AppData\Local\Apps\2.0\NOL11TLW.9XG\CZM702AQ.LPP\basu…exe_939730333fb6fcc8_0001.0002_none_8c555c3966727e7f 我该如何备份/恢复数据库? 如何通过ClickOnce进一步更新来保护数据库安全? 非常感谢 :)

ClickOnce应用程序用户设置位置

我目前正在开发一个ClickOnce应用程序,它可以转换CSV文件以进行数据库更新。 该程序要求用户能够更改数据库更改的配置文件,并更改填充应用程序中下拉列表的XML文件。 现在我知道文件保存在user / appdata文件夹中以确保具有正确的权限,但是我对这些文件夹的调用或保存位置有任何影响吗? 默认情况下,文件保存在AppData\Local\Apps\2.0\LD7ZEJK0.7AE\NJ42PEPW.1QX\csvt…exe_169e1a4011fbe7ec_0001.0000_none_04507fe9e077ae84 我可以改变它来说Documents\CSV_Files或类似的东西吗? 如果我这样做,我将如何在配置文件中引用XML文件,以便程序知道它在哪里?

从两个不同的位置安装ClickOnce应用程序

我有一个在.NET Framework 3.5,Service Pack 1中使用C#开发的Windows窗体应用程序。可以基于开发数据库和生产数据库发布应用程序。 我正在使用MSBuild社区任务来发布我的应用程序。 将应用程序发布到不同位置(即开发位置和生产位置)时,我不会遇到任何问题。 问题: 将开发应用程序安装到我的机器后,我无法安装生产应用程序。 它给我一个错误说: 您无法从此位置启动应用程序TEST,因为它已从其他位置安装 问题:机器如何理解我正在尝试安装相同的应用程序? 我认为它有某种应用程序ID。 如果是这种情况,我可以根据位置覆盖相关值。 (DEV或PROD) 在我的应用程序的项目文件中发布时的当前代码: \\A\B\development\ Data Source=SQL-DEV.company.com; Database=TEST;Uid=XYZ;Pwd=ABC; \\A\B\production\ Data Source=SQL-PROD.company.com;; Database=TEST;Uid=XYZ;Pwd=ABC; 应用程序的发布就像一个魅力,并指向相关的数据库。 我现在要做的就是能够在同一台机器上安装开发应用程序和生产应用程序而不会出现任何错误。 问题:一次应用程序与另一次应用程序的区别是什么?

MSBuild未生成发布网页(ClickOnce)

我遇到的问题是,当我通过MSBuild(4.0)发布ClickOnce应用程序时,不会在app.publish文件夹中创建publish.htm (或default.htm)。 通过Visual Studio发布时,它会被创建… 在我的.csproj文件中,我设置了以下属性,但它仍然无效… true default.htm 有任何想法吗? 谢谢

我需要人们对如何通过FTP更新ClickOnce应用程序的意见

我有一个C#应用程序,它通过一个数据库运行,它被不同位置的不同人使用。 每次更改时更新我的​​应用程序的最简单和最好的方法是创建ClickOnce应用程序并将其发布到服务器。 我的问题是我唯一可以拥有的服务器是FTP服务器,这里的问题是ClickOnce不支持从FTP服务器获取更新。 它支持更新到文件共享或Web主机。 所以我需要一些关于如何更新我的应用程序的意见。 有没有机会通过HTTP访问FTP服务器? 例如,不是输入myftp服务器来输入类似ftp的内容,而是重定向到FTP服务器。 这将拯救所有的喧嚣。 那么有人使用45.webmasters.com作为虚拟主机服务吗? 这是我的网站托管服务,我可以在网站上存储项目文件。 就像我可以创建一个目录并在那里保存应用程序的文件,但我不知道如何以编程方式访问此目录,以便在该位置发布。

如何在第一次运行ClickOnce部署的应用程序时检测到?

我有一个ClickOnce部署的应用程序,我正在使用它来检测第一次运行新部署时: if (ApplicationDeployment.IsNetworkDeployed && ApplicationDeployment.CurrentDeployment.IsFirstRun) { // Display release notes so user knows what’s new } 在ClickOnce执行自动更新后,它似乎按预期工作。 但是当用户在安装站点上发布publish.htm并手动安装新版本时,它根本不起作用。 有没有办法可靠地检测这两种情况? 编辑:我正在尝试解决的情况:有时用户会听到已发布更新并手动转到publish.htm以获取新版本,而不是启动应用程序并让ClickOnce处理升级。 对于ClickOnce,这显然与首次安装无法区分。 真的吗? 解决方案代码 :我最终使用以下关键部分创建了一个ClickOnce帮助程序类: public static bool IsFirstRun { get { if (!IsNetworkDeployed) return false; // not applicable == bool default value if (!File.Exists(VersionFileName)) return true; return (GetLastRunVersion() != Version.ToString()); } } public static void […]

如何从ClickOnce应用程序获取命令行?

在发布之前,我去了Project – > Properties – > Options – > File Associations,并添加了扩展名“.hsp”。 设置一个图标和一个ProgID(“MyCompany.Document.1”进行测试)。 我发布和安装后,我的.hsp文件有我设置的图标,所以应该正确设置文件关联,但是当我双击其中一个文件时,应用程序运行,我希望我双击的文件的名称是在命令行中。 我尝试读取传递给我的Main函数的参数,尝试了Environment.CommandLine ,并尝试了Environment.GetCommandLineArgs() ,但我发现的唯一的事情就是应用程序路径。 顺便说一下,在Main函数中创建主窗体之前,我正在进行所有这些检查,只是为了测试。 args参数为空,另外两个只包含我的应用程序路径。 这是我的Mainfunction的开始: static void Main(string[] args) { try { Application.EnableVisualStyles(); Application.SetCompatibleTextRenderingDefault(false); Application.ThreadException += new ThreadExceptionEventHandler(Application_ThreadException); MessageBox.Show(“CommandLine -> ” + Environment.CommandLine); foreach (string str in args) MessageBox.Show(“args -> ” + str); foreach (string str in Environment.GetCommandLineArgs()) MessageBox.Show(“GetCommandLineArgs -> ” […]

如何使用ClickOnce提供更新说明?

我们有一个应用程序,我编写了很多年,现在我通过ClickOnce推送更新。 该应用程序位于我们的主文件服务器上。 但每当我推出更新时,我都会被问到我改变了什么! 有没有办法用ClickOnce提供个性化的更新说明,这将是用户友好的? 例如,当用户启动他们的应用程序时,ClickOnce会询问“新版本是否可用。您要更新吗?”,在下面我可以描述我已更新的内容? 或者ClickOnce是不可能的?