Hello Playwright:(2)簡化部署方式

前言

上次的文章Hello Playwright:(1)從開發到部署發表后,有網友留言問,有不有簡化部署的方式:

cdf22e3312092541f48b29add06ca134.png

下面,提供 2 種可行的方案。

方案 1. Copy

其實 Playwright 默認是到C:\Users\用戶名\AppData\Local\ms-playwright文件夾下查找依賴的瀏覽器,我們只需將本機文件夾復制到部署機器的對應文件夾即可。

但更簡便的方式,是將瀏覽器也放到發布文件夾下一起部署。

具體做法如下:

  • 修改代碼,設置查找依賴瀏覽器路徑的環境變量:

static?async?Task?Main(string[]?args)
{Environment.SetEnvironmentVariable("PLAYWRIGHT_BROWSERS_PATH",?Path.Combine(AppDomain.CurrentDomain.BaseDirectory,?"ms-playwright"));var?playwright?=?await?Playwright.CreateAsync();...
}
  • 修改項目文件,設置發布時執行 Task,復制 ms-playwright 文件夾到發布文件夾下:

<Target?Name="PublishPlaywright"?AfterTargets="Publish"><ItemGroup><PlaywrightFiles?Include="$(LOCALAPPDATA)\ms-playwright\**\*.*"?/></ItemGroup><CopySourceFiles="@(PlaywrightFiles)"DestinationFiles="$(PublishDir)\ms-playwright\%(RecursiveDir)%(Filename)%(Extension)"/>
</Target>
  • 按照正常流程發布

現在將發布文件夾復制到另一臺機器上,無需運行瀏覽器安裝命令,直接運行控制臺程序。

控制臺程序將讀取 EXE 當前所在文件夾下的ms-playwright文件夾,獲取依賴的瀏覽器。

但是,這種方式有個明顯的缺點——開發和部署的計算機的操作系統必須一致,比如, Windows 開發機上的瀏覽器文件不能發布到 Linux 上運行。

這時,可以采用方案 2。

方案 2. 自動安裝

方案 2 還是需要運行瀏覽器安裝命令,但是從手工運行改成由代碼運行:

static?async?Task?Main(string[]?args)
{Console.WriteLine("Start?download?chromium");var?exitCode?=?Microsoft.Playwright.Program.Main(new[]?{?"install",?"chromium"?});if?(exitCode?!=?0){throw?new?Exception($"Playwright?exited?with?code?{exitCode}");}var?playwright?=?await?Playwright.CreateAsync();...
}

需要注意的是,部署模式一定要選“獨立”,否則對應操作系統的安裝腳本不會復制到發布文件夾。(我發現 v1.21?存在此?bug,已提交 issue 并修復)

按照正常流程發布,直接運行控制臺程序。

控制臺程序將自動執行瀏覽器安裝命令:

5170d17916143150c6e26229e0b9e469.gif

結論

2 種簡化部署方案,是否能夠滿足你的需要?歡迎留言反饋!

添加微信號【MyIO666】,邀你加入技術交流群

本文來自互聯網用戶投稿,該文觀點僅代表作者本人,不代表本站立場。本站僅提供信息存儲空間服務,不擁有所有權,不承擔相關法律責任。
如若轉載,請注明出處:http://www.pswp.cn/news/287878.shtml
繁體地址,請注明出處:http://hk.pswp.cn/news/287878.shtml
英文地址,請注明出處:http://en.pswp.cn/news/287878.shtml

如若內容造成侵權/違法違規/事實不符,請聯系多彩編程網進行投訴反饋email:809451989@qq.com,一經查實,立即刪除!

相關文章

ArcGIS實驗教程——實驗十六:空間數據查詢

ArcGIS實驗視頻教程合集:《ArcGIS實驗教程從入門到精通》(附配套實驗數據) 一、實驗描述 空間數據庫查詢定義:從空間數據庫中找出所有滿足屬性約束條件和空間約束條件的地理對象。 二、實驗內容 (一)屬性查詢 1、簡單查詢 2、SQL查詢 (二)圖形查詢 1、點查詢 2…

C++入門指南及實戰 第一步 概述及經典HelloWorld

本系列文章環境及學習門檻 編程基礎&#xff1a;無年齡&#xff1a;具有一定的邏輯思維英文&#xff1a;不要求數學&#xff1a;不要求學習時長&#xff1a;每天一篇&#xff0c;一周4-5篇即可&#xff0c;每篇最多1小時死記硬背&#xff1a;不需要&#xff0c;理解至上本機環…

【數學題】男女的比例

在一個重男輕女的國家里&#xff0c;每家每戶都想生男孩。若一戶人家生了一個男孩&#xff0c;就不會再生了。若一家生了一個女孩&#xff0c;便會再生一個&#xff0c;直到生下男孩為止。請問這個國家(有無限多的人民)的男女比例是多少?答案&#xff1a;1比1。在某一戶人家中…

為什么云服務器沒西南的_去年“雙11“我買的那臺云服務器

一、為什么會買云服務器為什么初學者需要一臺云服務器&#xff1f;從我自己那僅有的一點經驗來看&#xff0c;重點無非這一個詞&#xff1a;實踐。細數一下初學者擁有一臺云服務器的好處&#xff1a;學習操作系統、熟悉環境大部分初學者在本地使用的是windows系統&#xff0c;在…

Java線程安全以及線程安全的實現方式和內存模型(JMM)

一、了解幾個概念 1&#xff09;臨界區&#xff1a; 臨界區指的是一個訪問共用資源&#xff08;例如&#xff1a;共用設備或是共用存儲器&#xff09;的程序片段&#xff0c;而這些共用資源又無法同時被多個線程訪問的特性。當有線程進入臨界區段時&#xff0c;其他線程或是進…

animate 實現滑動切換效果

今天和大家分享一下用 animate 實現滑動切換效果的小例子 ------- 來自<一只有夢想的前端小白> 大家都知道jQuery 提供的有一下幾種方法能夠實現滑動效果&#xff1a; slideDown()slideUp()slideToggle()但是以上的滑動不太方便控制其滑動的方向&#xff0c;所以我們還是…

[不一樣的依賴注入]通過遞歸實現容器里依賴注入

遞歸實現依賴注入創建所需的依賴服務類1public class Test2{3 public void PrintTest()4 {5 Console.WriteLine("Hello World");6 }7}89public class Test2 10{ 11 private readonly Test _test; 12 13 public Test2(Test test) 14 { 15 …

ArcGIS實驗教程——實驗十七:緩沖區分析(Buffer Analysis)

ArcGIS實驗視頻教程合集:《ArcGIS實驗教程從入門到精通》(附配套實驗數據) 【實驗描述】 緩沖區(Buffer)是為了識別某一地理實體對周圍地物的影響而在其周圍建立的一定寬度多邊形區域,緩沖區分析(Buffer Analysis)是用來確定不同地理要素的空間臨近性或接近程度的一種分…

Java之jdk和CGLib實現動態代理

1 jdk實現動態代理源碼實現 這里需要用到InvocationHandler接口 public interface Hello {public void sayHello(); } public class HelloImpl implements Hello {Overridepublic void sayHello() {System.out.println("hello word");} }import java.lang.reflect…

從Visual Studio中生成Linux設備

本文講的是從Visual Studio中生成Linux設備&#xff0c;【IT168 云計算頻道】近日Novell發布了SUSE Studio&#xff1a;一個用于創建Linux設備&#xff08;appliance&#xff09;的工具。與此同時&#xff0c;Mono小組創建了一個插件以從Visual Studio中生成支持SUSE的設備。 …

C++入門指南及實戰 第二步 HelloWorld及擴展詳解

回顧 在上一節中&#xff0c;我們編寫了如下代碼&#xff0c;完成了 HelloWorld程序的編寫&#xff1a; #include<iostream> using namespace std;int main(){cout <<"Hello World";return 0; }本小節將會對該代碼進行講解&#xff0c;并且解釋一下專業…

2560x1600分辨率高嗎_做設計還弄不清分辨率和像素之間的關系,來了解下他們是怎么換算...

許多同學都在問我關于像素的問題&#xff0c;為什么印刷時要300分辨率以上&#xff1f;網頁為什么72就夠了&#xff1f;做戶外噴繪30&#xff0c;甚至巨幅畫面20就上了。關于這些還是很多人不知道的&#xff0c;要不也不會被賣手機的忽悠&#xff0c;各大手機推銷員拿著手機大聲…

使用 fixture 機制重構 appium_helloworld

一、前置說明 在 pytest 基礎講解 章節,介紹了 pytest 的特性和基本用法,現在我們可以使用 pytest 的一些機制,來重構 appium_helloworld 。 appium_helloworld 鏈接: 編寫第一個APP自動化腳本 appium_helloworld ,將腳本跑起來 代碼目錄結構: pytest.ini 設置: [pyt…

linux程序調試命令strace

strace命令用法詳解: strace常用來跟蹤進程執行時的系統調用和所接收的信號。 在Linux世界&#xff0c;進程不能直接訪問硬件設備&#xff0c;當進程需要訪問硬件設備(比如讀取磁盤文件&#xff0c;接收網絡數據等等)時&#xff0c;必須由用戶態模式切換至內核態模式&#xff0…

Tomcat相關 -- 內存設置

java內存溢出詳解 一、常見的java內存溢出 1、java.lang.OutOfMemmoryError : Java heap space -- JVM Heap &#xff08;jvm 堆溢出&#xff09; JVM啟動時自動設置JVM Heap的值&#xff0c;其初始空間(即 -Xms)是物理內存的1/64&#xff0c;最大空間(-Xms)不可超過物理內存。…

CoreWCF 1.0 正式發布,支持 .NET Core 和 .NET 5+ 的 WCF

CoreWCF 項目組正式發布 1.0 版本的 CoreWCF, 這是面向 .NET Core 平臺的 WCF 移植版本。它支持 SOAP、NetTCP 和 WSDL 的相同實現。在代碼中的使用方式于 WCF 相同&#xff0c;但是升級到使用 ASP.NET Core 作為服務宿主&#xff0c;并工作在 .NET Core 平臺上。這是該項目的第…

【經典回放】多種語言系列數據結構算法:快速排序

快速排序(Quicksort)是對冒泡排序的一種改進。 快速排序由C. A. R. Hoare在1960年提出。它的基本思想是:通過一趟排序將要排序的數據分割成獨立的兩部分,其中一部分的所有數據都比另外一部分的所有數據都要小,然后再按此方法對這兩部分數據分別進行快速排序,整個排序過…

表頭合并_多個Excel表格合并數據麻煩?試試Power Query輕松幫你解決

Hi!大家好&#xff01;歡迎來到小龍自修室&#xff01;又到了小龍分享時間&#xff01;(今天的內容有點多&#xff0c;希望各位看官一定要看到最后&#xff01;有驚喜)上一篇文字小龍和大家一起制作了一個限定數據內容錄入的電子表格&#xff0c;我的表格我做主&#xff01;表格…

C++入門指南及實戰 第三步 基本變量

在C編程中&#xff0c;內置了一些基本數據類型用來存儲一些不同類型的值。有字符類型 char 用以存儲字符&#xff0c;如a、b、c、d、-、、1、2、4、3、>、?等&#xff1b;有整形 int 用以存儲整數類型&#xff0c;如1、2、3、4、5、11、111、2311等&#xff1b;有浮點類型 …

OPCServer Modbus使用和配置

一&#xff0c;安裝KEPware.Enhanced.OPC.DDE.KEPServer。(PLC數據傳送給KEPServer,開發的程序用OPCServer讀KEPServer) 設置ip地址后面是指的plc站號&#xff0c;此處必須和plc上站號對應。否則無法接收數據。 打開quick client 查看傳值情況 二.C#程序代碼 引用opcdaauto.dll…