อนุญาตให้ 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
เนื่องจากมีการแนบมาด้วยมันจะแสดงแยกต่างหากในเมนูเริ่ม
คุณยังสามารถดูทั้งสองอย่างได้ในรายการแอป