อนุญาตให้ ClickOnce ติดตั้งโปรแกรมที่เผยแพร่หลายโปรแกรมจากโครงการเดียวกันในสภาพแวดล้อมเดียวกัน (รุ่น.NET Framework เท่านั้น)

ปรับปรุงหน้า :
วันที่สร้างเพจ :

สภาพแวดล้อมการตรวจสอบการทํางาน

วิชวลสตูดิโอ
  • วิชวลสตูดิโอ 2022
กรอบงาน.NET
  • กรอบ.NET 4.8

สภาพแวดล้อมที่จําเป็น

โครงร่าง
  • ฟอร์มของ Windows (กรอบงาน NET) โดยทั่วไป
  • WPF (กรอบงาน.NET) โดยทั่วไป

ทีแรก

เคล็ดลับนี้อธิบายวิธีการติดตั้ง ClickOnce ที่เผยแพร่หลายรายการจากโครงการเดียวกันแยกต่างหากในสภาพแวดล้อมเดียวกัน

เกี่ยวกับขั้นตอนการเผยแพร่สําเนาหลายชุดจากโครงการเดียวกันในการกําหนดค่าที่แตกต่างกัน

ตัวอย่างเช่นแม้ในโครงการเดียวกันถ้าเนื้อหาการประมวลผลมีการเปลี่ยนแปลงขึ้นอยู่กับการกําหนดค่าการสร้างคุณอาจต้องการเผยแพร่เป็นโปรแกรมแยกต่างหาก นี้เป็นไปได้ในรุ่น.NET (Core) แต่ไม่ได้อยู่ในรุ่น.NET Framework กับคุณลักษณะมาตรฐานของ Visual Studio

วิธีนี้สรุปไว้ในเคล็ดลับต่อไปนี้โดยใช้โปรแกรมแบตช์ เคล็ดลับนี้อธิบายไว้ในสมมติฐานที่ว่าเนื้อหาต่อไปนี้เสร็จสมบูรณ์แล้ว

เงื่อนไขที่ ClickOnce ติดตั้งเป็นแอปพลิเคชันแยกต่างหาก

หากคุณเผยแพร่โดยใช้โปรแกรมแบตช์ที่อธิบายไว้ข้างต้นการกําหนดค่าบิลด์จะเปลี่ยนไป แต่ทั้งสองจะถือว่าเป็นแอปพลิเคชันเดียวกัน ถ้าคุณพยายามที่จะติดตั้งสองในสภาพแวดล้อมเดียวกัน จะมีข้อขัดแย้ง และการติดตั้งจะล้มเหลว แม้ว่าคุณจะพยายามติดตั้งในภายหลัง

ฉันจําเป็นต้องทําให้สิ่งนี้ดูเหมือนจะเป็นแอปพลิเคชันแยกต่างหาก แต่ตามบทความที่อ้างอิงพารามิเตอร์ต่อไปนี้ระบุแอปพลิเคชัน:

หนังสืออ้างอิง: (.สุทธิ) เมื่อฉันเปิดแอปหลังจากเผยแพร่ด้วย ClickOnce ฉันได้รับว่า "รหัสตําแหน่งไม่ตรงกับการสมัครสมาชิก"

  • ชื่อโปรแกรมประยุกต์
  • โทเค็นคีย์สาธารณะ
  • วัฒนธรรม
  • สถาปัตยกรรมตัวประมวลผล (ตัวอย่างเช่น x86)

ในบรรดาสิ่งเหล่านี้ฉันคิดว่ามันไม่เป็นที่พึงปรารถนาที่จะเปลี่ยน "วัฒนธรรม" และ "สถาปัตยกรรมโปรเซสเซอร์" เพราะมีความเป็นไปได้ที่จะได้ผลลัพธ์การประมวลผลที่ไม่ได้ตั้งใจ

ฉันคิดว่ามีวิธีเปลี่ยน "ชื่อแอปพลิเคชัน" โดยทั่วไปไม่แนะนําเพราะสามารถตั้งชื่อได้เพียงชื่อเดียวสําหรับโครงการเดียว มีความเป็นไปได้ที่คําจํากัดความหลายแบบสามารถทําได้โดยการกําหนดค่าการสร้างและพารามิเตอร์เงื่อนไขในเนื้อหาของไฟล์โครงการ เนื่องจากสามารถตั้งค่า UI ได้เพียงรายการเดียวใน Visual Studio จึงเป็นอันตรายเล็กน้อยเนื่องจากอาจถูกเขียนทับขึ้นอยู่กับการดําเนินการ

ส่วนที่เหลือเป็น "โทเค็นคีย์สาธารณะ" แต่อันนี้ช่วยให้คุณสร้างใบรับรองได้หลายใบ เนื่องจากสามารถระบุเป็นพารามิเตอร์ได้ในขณะที่เผยแพร่ ClickOnce, ฉันต้องการระบุแอปพลิเคชันด้วยเวลานี้.

ขั้นตอนการตรวจสอบการทํางาน

จากจุดของการสร้างโครงการจนถึงจุดที่พร้อมที่จะเผยแพร่เป็นไฟล์แบตช์จะเหมือนกับเคล็ดลับต่อไปนี้ดังนั้นโปรดดูขั้นตอนจนถึงจุดนั้น

การสร้างใบรับรอง

คราวนี้เราจะยืนยันด้วยใบรับรองการทดสอบสําหรับตัวอย่าง เดิมทีควรทําด้วยใบรับรองปกติ แต่เนื่องจากจะต้องมีขั้นตอนอื่นนอกเหนือจากหัวข้อหลักเช่นการสร้างใบรับรองและการเตรียมผู้ออกใบรับรองฉันจะยกเว้นคําอธิบายที่เกี่ยวข้องกับใบรับรอง ในการผลิตคุณสามารถแทนที่ไฟล์ใบรับรองการทดสอบด้วยไฟล์การผลิตได้

หลังจากที่คุณสร้างโครงการ และสร้างชุดงานสําหรับการประกาศ แล้ว ให้กลับไปยัง Visual Studio เปิดคุณสมบัติโครงการแล้วเลือก เซ็นชื่อ จากเมนูทางด้านซ้าย มีการตรวจสอบสําหรับ "ลงชื่อในรายการ ClickOnce" เพื่อตรวจสอบ

ตอนนี้สร้างใบรับรองสองใบ คราวนี้เราจะสร้างมันขึ้นมาบนหน้าจอนี้ แต่ ". รูปแบบไฟล์ pfx"ไม่มีปัญหากับการสร้างใบรับรองด้วยวิธีอื่น

มีปุ่ม "สร้างใบรับรองการทดสอบ" ที่มุมล่างขวาดังนั้นให้คลิกที่มัน

นอกจากนี้คุณยังสามารถใส่รหัสผ่านได้ แต่ใช้งานได้ไม่ว่าคุณจะใส่รหัสผ่านหรือไม่ก็ตาม อย่างไรก็ตามหากคุณต้องการใส่รหัสผ่านขั้นตอนจะลําบากดังนั้นฉันจะไม่ใส่มันในครั้งนี้

ไฟล์ใบรับรอง (.pfx) ถูกสร้างขึ้นสําหรับโครงการของคุณ ชื่อไฟล์ที่สร้างขึ้นที่นี่ได้รับการแก้ไข แล้ว แต่สามารถเปลี่ยนแปลงได้ในภายหลัง โดยวิธีการที่ความถูกต้องของใบรับรองการทดสอบที่สร้างขึ้นที่นี่คือหนึ่งปี หลังจากหนึ่งปีคุณจะต้องสร้างใบรับรองใหม่

ทําตามขั้นตอนเดียวกันเพื่อสร้างอีกขั้นตอนหนึ่ง

คราวนี้เราจะเผยแพร่ในบิลด์ Debug และบิลด์รีลีส ดังนั้นเราจะเปลี่ยนชื่อเป็นชื่อที่ชัดเจน

การปรับเปลี่ยนแบทช์

เปิดแฟ้มแบตช์ที่คุณสร้าง (.bat) ในตัวแก้ไขข้อความ และเพิ่มสิ่งต่อไปนี้ลงในพารามิเตอร์ของ msbuild:

คําอธิบาย
ชื่อพารามิเตอร์ ที่จําเป็น
ManifestKeyFile ชื่อแฟ้ม (.pfx) ของใบรับรอง ระบุเส้นทางที่สัมพันธ์กับหรือสัมบูรณ์จากไฟล์โครงการ
ManifestCertificateThumbprint พิมพ์นิ้วหัวแม่มือของใบรับรองรายการ ค่าที่จะใส่เข้าไปสามารถเป็นอะไรก็ได้ แต่ต้องใส่เข้าไปทุกวิถีทาง
ชื่อผลิตภัณฑ์ ชื่อผลิตภัณฑ์ มันจะกลายเป็นชื่อที่แสดงของเมนูเริ่มหรือรายการโปรแกรม
ชื่อสํานักพิมพ์ ชื่อบริษัทมหาชน มันจะกลายเป็นชื่อโฟลเดอร์เมื่อจัดระเบียบโปรแกรมในเมนูเริ่ม

จากข้อมูลข้างต้นให้แก้ไขไฟล์แพตช์ดังนี้

คลิกOnceDebugเผยแพร่.bat (ตัวอย่าง)

call "C:\Program Files\Microsoft Visual Studio\2022\Community\Common7\Tools\VsDevCmd.bat"
cd %~dp0
msbuild ClickOnceBuildConfiguration.sln /t:Publish /t:CopyPublishedApplication /p:Configuration=Debug /p:PublishUrl="publish\Debug\\" /p:InstallUrl="\\xxxxServer\publish_Debug\\" /p:ManifestKeyFile="ClickOnceMultipleInstallDebug.pfx" /p:ManifestCertificateThumbprint="Debug" /p:ProductName="CliclOnce テスト Debug システム" /p:PublisherName="Sorceryforce"

คลิกOnceออกปัญหา.bat (ตัวอย่าง)

call "C:\Program Files\Microsoft Visual Studio\2022\Community\Common7\Tools\VsDevCmd.bat"
cd %~dp0
msbuild ClickOnceBuildConfiguration.sln /t:Publish /t:CopyPublishedApplication /p:Configuration=Release /p:PublishUrl="publish\Release\\" /p:InstallUrl="\\xxxxServer\publish_Release\\" /p:ManifestKeyFile="ClickOnceMultipleInstallRelease.pfx" /p:ManifestCertificateThumbprint="Release" /p:ProductName="CliclOnce テスト Release システム" /p:PublisherName="Sorceryforce"

ManifestKeyFile แต่ละค่าจะระบุแฟ้มใบรับรองที่แตกต่างกัน ManifestCertificateThumbprint ค่าของสามารถเป็นอะไรก็ได้ แต่อย่าลืมรวมไว้ด้วยเพราะแอปพลิเคชันไม่สามารถระบุได้ว่าเป็นอีกแอปพลิเคชันหนึ่งหากคุณไม่ได้ใส่ไว้

โดยวิธีการเนื่องจากมีการติดตั้งสองโปรแกรมในสภาพแวดล้อมเดียวกันในครั้งนี้จึงมีการเพิ่มพารามิเตอร์เพื่อให้สามารถ ProductName แยกแยะได้ PublisherName ตามความชอบของคุณ

ประเด็น

หลังจากป้อนข้อมูลแล้วให้รันไฟล์แบตช์แต่ละไฟล์และเผยแพร่

ถ้า xxxx.application อยู่ในไฟล์ที่คุณเผยแพร่ ให้เปิดไฟล์นั้นในโปรแกรมแก้ไขข้อความ และตรวจสอบให้แน่ใจว่าpublicKeyToken มีค่าอื่น

ติดตั้ง

หลังจากคัดลอกไฟล์ที่เผยแพร่ไปยังโฟลเดอร์สาธารณะแล้วให้เรียกใช้เพื่อติดตั้งไฟล์เหล่านั้นsetup.exe

หากคุณป้อนใบรับรองในเวลาที่ออกหน้าจอต่อไปนี้จะปรากฏขึ้นในเวลาที่ติดตั้ง หากเป็นใบรับรองการทดสอบผู้เผยแพร่จะไม่สามารถยืนยันได้ดังนั้นให้ติดตั้งตามที่เป็นอยู่

โปรแกรมแรกได้รับการติดตั้งและเปิดตัว

ฉันจะพยายามติดตั้งอื่น ๆ หนึ่ง

อีกอันหนึ่งได้รับการติดตั้งและเปิดตัวด้วย

แน่นอนว่าทั้งคู่ทํางานในเวลาเดียวกัน

ProductName เนื่องจากมีการแนบมาด้วยมันจะแสดงแยกต่างหากในเมนูเริ่ม

คุณยังสามารถดูทั้งสองอย่างได้ในรายการแอป