เปลี่ยนการตั้งค่า ClickOnce ขึ้นอยู่กับการกําหนดค่าบิลด์ที่เลือก (เวอร์ชัน .NET Framework เท่านั้น)
สิ่งแวดล้อม
- โครงร่าง
-
- ฟอร์มของ Windows (กรอบงาน NET) โดยทั่วไป
- WPF (กรอบงาน.NET) โดยทั่วไป
สถานที่ตั้ง
เนื้อหาของเคล็ดลับเหล่านี้เป็นสมมติฐานโครงการสําหรับ.NET Framework ในกรณีของ .NET (Core), คุณสามารถตั้งค่าการเผยแพร่ ClickOnce ในหน่วยการกําหนดค่าบิลด์, ดังนั้นโปรดเผยแพร่ตามปกติ.
นอกจากนี้ยังถือว่าคุณมีความรู้เพียงพอที่จะใช้ ClickOnce ตามปกติ.
ทีแรก
เนื่องจากโครงการ .NET Framework สามารถมีการตั้งค่าการประกาศ ClickOnce ได้เพียงหนึ่งการตั้งค่าเท่านั้น ตัวอย่างเช่น เมื่อต้องการเผยแพร่ด้วยการตั้งค่าต่างๆ ในบิลด์ Debug และบิลด์รีลีส คุณต้องเปลี่ยนการตั้งค่าด้วยตนเองทุกครั้งก่อนที่จะเผยแพร่
คุณสามารถมีการตั้งค่าสองแบบได้โดยการจัดกลุ่มโครงการเป็น DLL และสร้างโครงการแยกกันสองโครงการสําหรับการประกาศ คุณจะมีการกําหนดค่าเดียวกันสองครั้งและหากมีไฟล์ทรัพยากรที่จําเป็นสําหรับการเผยแพร่คุณต้องมีสองไฟล์ในแต่ละครั้งดังนั้นการจัดการจะลําบาก
ส่วนนี้อธิบายวิธีการสร้างไฟล์แบตช์ (.bat) ได้มากเท่าที่คุณต้องการและเผยแพร่ ClickOnce
การกําหนดค่าคลิกOnce
คราวนี้ "ตําแหน่งโฟลเดอร์สาธารณะ" และ "URL โฟลเดอร์การติดตั้ง" ถูกแยกออกสําหรับ "Debug Build" และ "Release Build" การตั้งค่าอื่น ๆ ถูกสร้างขึ้นด้วยนโยบายในการทําให้เป็นมาตรฐาน พารามิเตอร์อื่น ๆ สามารถแยกจากกันได้ แต่อาจเป็นเรื่องยุ่งยากที่จะแยก "ไฟล์แอปพลิเคชัน" และ "ข้อกําหนดเบื้องต้น" ออกจากกัน
ขั้นแรกให้เปิดโครงการและป้อนการตั้งค่า ClickOnce ของคุณตามปกติ เนื้อหาอินพุตถูกตั้งค่าเป็นพารามิเตอร์ที่จะออกโดย Debug แต่สิ่งอื่นใดนอกเหนือจากส่วนทั่วไปจะดีตราบใดที่ไม่ก่อให้เกิดข้อผิดพลาด
ต่อไปนี้เป็นตัวอย่างของการตั้งค่าคอนฟิก:
เมื่อคุณพิมพ์แล้ว ให้บันทึกโครงการ
สร้างไฟล์.batสําหรับการเผยแพร่ ClickOnce
เนื่องจากออกมาพร้อมกับคําสั่งจึงสามารถดําเนินการบนสื่ออื่นๆ เช่น PowerShell ได้ แต่คราวนี้ถูกสร้างขึ้นเป็นไฟล์ BAT
คุณสามารถสร้างไฟล์ได้ทุกที่ แต่เพื่อวัตถุประสงค์ที่เรียบง่ายฉันจะสร้างมันในตําแหน่งของไฟล์โซลูชัน (.sln) เนื่องจากเป็นไฟล์ BAT การเข้ารหัสอักขระจึงเป็น Shift-JIS PS1 สามารถเป็น UTF-8 (BOM)
เปิดไฟล์ BAT ในโปรแกรมแก้ไขข้อความและพิมพ์: โปรดทราบว่า PowerShell อาจจัดการการหลบหนีแตกต่างกัน
call "C:\Program Files\Microsoft Visual Studio\2022\Community\Common7\Tools\VsDevCmd.bat"
cd %~dp0
msbuild ClickOnceBuildConfiguration.sln /t:Publish /p:Configuration=Debug /p:PublishUrl="publish\Debug\\" /p:InstallUrl="\\xxxxServer\publish_Debug\\"
บรรทัดแรกชี้ไปที่ตําแหน่งของ "พรอมต์คําสั่งของนักพัฒนา" เส้นทางนี้ขึ้นอยู่กับรุ่นของ Visual Studio ที่คุณกําลังติดตั้ง
แต่ละส่วนของเส้นทางขึ้นอยู่กับเงื่อนไขต่อไปนี้:
- ไฟล์โปรแกรม
-
เงื่อนไข เส้นทาง ไฟล์โปรแกรม - หากคุณใช้ระบบปฏิบัติการ 32 บิต
- ถ้าคุณกําลังใช้ Visual Studio รุ่น 64 บิตบนระบบปฏิบัติการแบบ 64 บิต
ไฟล์โปรแกรม (x86) - ถ้าคุณกําลังใช้ Visual Studio รุ่น 32 บิตบนระบบปฏิบัติการแบบ 64 บิต
- 2022
- ขึ้นอยู่กับรุ่นของ Visual Studio ที่คุณกําลังติดตั้ง
- ชุมชน
- ขึ้นอยู่กับรุ่นของ Visual Studio ที่คุณกําลังติดตั้ง "ชุมชน", "มืออาชีพ", "องค์กร" ฯลฯ จะถูกป้อน
บรรทัดที่สองย้ายไดเร็กทอรีปัจจุบันไปยังตําแหน่งของไฟล์ BAT
บรรทัดที่สามคือคําสั่งการประมวลผลการสร้าง ClickOnce ความหมายของแต่ละพารามิเตอร์มีดังนี้
คําอธิบาย | ชื่อพารามิเตอร์ |
---|---|
msbuild | คําสั่งที่รันกระบวนการสร้าง จําเป็นและเขียนก่อน |
ClickOnceBuildConfiguration.sln | อธิบายชื่อแฟ้มของโซลูชันที่จะสร้าง |
/t:Publish |
ระบุกระบวนการสร้าง ClickOnce |
/p:Configuration=Debug |
ระบุการตั้งค่าคอนฟิกบิลด์ที่คุณได้ตั้งค่าไว้สําหรับโซลูชันของคุณ ถ้าคุณต้องการเปลี่ยนการกําหนดค่าการตรวจแก้จุดบกพร่องที่จะสร้าง ให้เปลี่ยนข้อความในส่วน "ดีบัก" |
/p:PublishUrl="publish\Debug\\" |
เขียนทับค่าของ "ตําแหน่งที่ตั้งโฟลเดอร์สาธารณะ" บนหน้าจอการประกาศ Visual Studio ด้วยสตริงที่ระบุ และดําเนินการ |
/p:InstallUrl="\\xxxxServer\publish_Debug\\" |
เขียนทับค่าของ "URL โฟลเดอร์การติดตั้ง" บนหน้าจอการประกาศ Visual Studio ด้วยสตริงที่ระบุ และดําเนินการ |
พารามิเตอร์บางตัวถูกแยกออกแล้ว แต่ดูลิงก์ต่อไปนี้สําหรับพารามิเตอร์อื่นๆ:
เป็นตัวอย่างในครั้งนี้เราจะเปลี่ยนพารามิเตอร์การเผยแพร่ของ ClickOnce ในแต่ละดีบักและรีลีสบิลด์ดังนั้นเราจะสร้างมันดังนี้
เผยแพร่โดย คลิกออนเซเดบัค.bat
call "C:\Program Files\Microsoft Visual Studio\2022\Community\Common7\Tools\VsDevCmd.bat"
cd %~dp0
msbuild ClickOnceBuildConfiguration.sln /t:Publish /p:Configuration=Debug /p:PublishUrl="publish\Debug\\" /p:InstallUrl="\\xxxxServer\publish_Debug\\"
ClickOnceออกเผยแพร่.bat
call "C:\Program Files\Microsoft Visual Studio\2022\Community\Common7\Tools\VsDevCmd.bat"
cd %~dp0
msbuild ClickOnceBuildConfiguration.sln /t:Publish /p:Configuration=Release /p:PublishUrl="publish\Release\\" /p:InstallUrl="\\xxxxServer\publish_Release\\"
คลิกOnce เผยแพร่การดําเนินการไฟล์ BAT
ลองเรียกใช้ไฟล์ BAT แต่ละไฟล์
พรอมต์คําสั่งถูกเปิดใช้งานและการสร้างจะเริ่มต้น
จริงๆแล้วไฟล์ BAT ที่สร้างขึ้นในครั้งนี้เป็นเพียงกระบวนการจนกว่าจะสร้างดังนั้นไฟล์จะไม่ถูกสร้างขึ้นใน "ตําแหน่งโฟลเดอร์สาธารณะ" ไฟล์ที่จําเป็นสําหรับการเผยแพร่ได้ถูกสร้างขึ้นแล้ว ตัวอย่างเช่น ในกรณีของรุ่นการตรวจแก้จุดบกพร่อง คุณควรมีแฟ้มในเส้นทางโฟลเดอร์โครงการ "< >\bin\Debug\app.publish\" คัดลอกไฟล์เหล่านี้ไปยัง "URL ของโฟลเดอร์การติดตั้ง" และจะทํางานได้อย่างถูกต้องเป็น ClickOnce
ประกาศไปยังตําแหน่งโฟลเดอร์สาธารณะ (ถ้าปลายทางเป็นโฟลเดอร์ที่คุณมีสิทธิ์เข้าถึงโดยตรง)
ไซต์ต่อไปนี้ใช้เป็นข้อมูลอ้างอิงสําหรับส่วนนี้
พื้นที่นี้ไม่เกี่ยวข้องโดยตรงกับการประมวลผลของ ClickOnce, ดังนั้นโปรดดูที่เว็บไซต์ข้างต้นสําหรับคําอธิบายโดยละเอียด.
ขั้นแรกให้เปิดไฟล์โครงการ (.csproj) ในโปรแกรมแก้ไขข้อความ มันไม่ใช่ไฟล์แก้ปัญหา
ภายในเป็นโครงสร้าง XML และถ้าคุณเลื่อนไปด้านล่างให้เพิ่มรหัสต่อไปนี้ </Project>
ลงในบรรทัดด้านบน
หากเป็นกระบวนการคัดลอกหลักฐานการคัดลอกไฟล์เนื้อหาจะได้รับการแก้ไข แต่ส่วนหนึ่งของนั้น CopyPublishedApplication
เป็นไปตามอําเภอใจ คุณจะใช้ชื่อนี้ในภายหลัง
<!-- ここから ClickOnce の発行処理 -->
<Target Name="CopyPublishedApplication">
<ItemGroup>
<MySourceFiles Include="$(PublishDir)**\*.*" Exclude="$(PublishDir)$(AssemblyName).exe" />
</ItemGroup>
<PropertyGroup>
<AppricationDir>$(_DeploymentApplicationDir.Substring($(PublishDir.Length)))</AppricationDir>
</PropertyGroup>
<Copy SourceFiles="@(MySourceFiles)" DestinationFiles="@(MySourceFiles->'$(PublishUrl)%(RecursiveDir)%(Filename)%(Extension)')" />
</Target>
<!-- ここまで ClickOnce の発行処理 -->
บันทึกเมื่อคุณป้อนแล้ว
จากนั้นเปิดไฟล์ BAT แต่ละไฟล์และเพิ่มลงใน /t:CopyPublishedApplication
พารามิเตอร์ msbuild CopyPublishedApplication
เป็นชื่อที่ฉันให้คุณก่อนหน้านี้
คลิก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\\"
เมื่อคุณเรียกใช้แฟ้ม BAT คุณจะเห็นว่า แฟ้มถูกคัดลอกไปยังตําแหน่งโฟลเดอร์สาธารณะ ในขณะนี้ไม่มีชื่อโปรแกรม<>.exeไฟล์ แต่ไม่จําเป็นเพราะเดิมรวมอยู่ใน.exeการตั้งค่า
- เสริม
-
หากมีหลายโครงการในโซลูชัน ให้เรียกใช้
CopyPublishedApplication
สําหรับโครงการทั้งหมด ในกรณีส่วนใหญ่จะถูกตั้งค่าเป็นโครงการ exe เท่านั้นดังนั้นข้อผิดพลาดจะปรากฏขึ้นเมื่อทํางานในCopyPublishedApplication
โครงการอื่น การละเว้นนั้นปลอดภัยเพราะจะแสดงเฉพาะข้อความเท่านั้น
ประกาศไปยังตําแหน่งที่ตั้งโฟลเดอร์สาธารณะ (สําหรับ FTP)
ฉันไม่ได้พยายามมัน แต่คุณอาจต้องการอ้างถึงเว็บไซต์ต่อไปนี้
สิ่งอื่น ๆ ที่ควรคํานึงถึง
- แม้ว่าคุณจะแยกการออก ClickOnce ออกเป็นหลายส่วน เอนทิตีจะถือว่าเป็นโปรแกรมเดียวกัน ดังนั้น ตัวอย่างเช่น คุณไม่สามารถติดตั้งโปรแกรมที่เผยแพร่ใน Debug และโปรแกรมที่เผยแพร่ด้วย Release ในสภาพแวดล้อมเดียวกันได้ ในการติดตั้งมีความจําเป็นต้องใช้มาตรการต่าง ๆ เช่นการเปลี่ยนชื่อของแต่ละแอสเซมบลี โปรดดูเว็บไซต์ต่อไปนี้เพื่อดูสิ่งที่ระบุโดยมัน