تغییر تنظیمات ClickOnce بسته به پیکربندی ساخت انتخاب شده (.NET نسخه چارچوب تنها)
محیط
- چارچوب
-
- فرم های ویندوز (.NET Framework) به طور کلی
- WPF (.NET Framework) به طور کلی
فرض
محتویات این نکات فرضیات پروژه برای چارچوب .NET است. در مورد .NET (هسته)، شما می توانید تنظیمات انتشار ClickOnce را در واحد پیکربندی ساخت تنظیم کنید، بنابراین لطفا طبق معمول منتشر کنید.
همچنین فرض می کند که شما دانش کافی برای استفاده از ClickOnce به طور معمول.
در ابتدا
از آنجا که یک پروژه .NET Framework می تواند تنها یک تنظیمات انتشار ClickOnce داشته باشد، به عنوان مثال، برای انتشار با تنظیمات مختلف در یک ساخت Debug و ساخت Release، باید هر بار قبل از انتشار، تنظیمات را به صورت دستی تغییر دهید.
شما می توانید دو تنظیمات با گروه بندی پروژه ها را به DLL و ایجاد دو پروژه جداگانه برای انتشار داشته باشد. شما دو بار پیکربندی مشابهی خواهید داشت و اگر فایل های منابع لازم برای انتشار وجود داشته باشد، باید دو تا از آنها را در یک زمان داشته باشید، بنابراین مدیریت دردسرساز خواهد بود.
این بخش نحوه ایجاد یک فایل دسته ای (.bat) را به اندازه نیاز شما توصیف می کند و ClickOnce را منتشر می کند.
پیکربندی ClickOnce
این بار ،"مکان پوشه عمومی" و "Url پوشه نصب" برای "Debug Build" و "Release Build" از هم جدا شدند. تنظیمات دیگر با سیاست رایج کردن آن ها ایجاد می شوند. پارامترهای دیگر می توانند جدا از هم باشد، اما می تواند دست و پا گیر باشد تا «فایل های برنامه» و «پیش نیازها» از هم جدا نگه دارند.
ابتدا پروژه را باز کرده و طبق معمول تنظیمات ClickOnce خود را وارد کنید. محتویات ورودی به پارامترهایی تنظیم می شوند که توسط Debug صادر شوند، اما هر چیزی غیر از بخش مشترک تا زمانی که خطا ایجاد نمی کند خوب است.
در زیر مثالی از پیکربندی وجود دارد:
پس از تایپ، پروژه را ذخیره کنید.
ایجاد یک .bat برای انتشار ClickOnce
از آنجا که با یک دستور صادر می شود، می توان آن را در رسانه های دیگر مانند PowerShell اجرا کرد، اما این بار به عنوان یک فایل BAT ایجاد می شود.
شما می توانید فایل را در هر نقطه ایجاد کنید ، اما برای اهداف سادگی ، من آن را در محل فایل راه حل (.sln). از آنجا که یک فایل BAT است، encoding شخصیت 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\\"
خط اول به محل "Developer Command Prompt" اشاره می کند. این مسیر بستگی به نسخه ویژوال استودیویی که در حال نصب آن هستید دارد.
هر قسمت از مسیر به شرایط زیر بستگی دارد:
- فایل های برنامه
-
شرایط مسیر فایل های برنامه - اگر از سیستم عامل 32 بیتی استفاده می کنید
- اگر شما با استفاده از نسخه 64 بیتی از ویژوال استودیو در سیستم عامل 64 بیتی
فایل های برنامه (x86) - اگر شما با استفاده از نسخه 32 بیتی از ویژوال استودیو در سیستم عامل 64 بیتی
- 2022
- این بستگی به نسخه ای از ویژوال استودیو شما در حال نصب.
- جامعه
- این بستگی به نسخه ویژوال استودیو شما در حال نصب. "جامعه"، "حرفه ای"، "تصدی"، و غیره وارد خواهد شد.
خط دوم دایرکتوری فعلی را به محل فایل BAT حرکت می دهد.
خط سوم فرمان پردازش ساخت ClickOnce است. معنی هر پارامتر به این قرار است.
توصیفنام | پارامتر |
---|---|
msbuild | فرمانی که فرایند ساخت را اجرا می کند. مورد نیاز و نوشته شده اول. |
ClickOnceBuildConfiguration.sln | نام پرونده راه حلی که باید ساخته شود را توصیف می کند. |
/t:Publish |
یک فرایند ساخت ClickOnce را نشان می دهد. |
/p:Configuration=Debug |
پیکربندی ساختی که برای راه حل خود تنظیم کرده ای را مشخص می کند. اگر می خواهید پیکربندی اشکال زدایی را تغییر دهید تا ساخته شود، متن را در قسمت "Debug" تغییر دهید. |
/p:PublishUrl="publish\Debug\\" |
بازنویسی مقدار "مکان پوشه عمومی" بر روی صفحه نمایش انتشار ویژوال استودیو با رشته مشخص شده و اجرای آن. |
/p:InstallUrl="\\xxxxServer\publish_Debug\\" |
بازنویسی مقدار "URL پوشه نصب" بر روی صفحه نمایش انتشار ویژوال استودیو با رشته مشخص شده و اجرای آن. |
برخی از پارامترها استخراج شده اند، اما لینک های زیر را برای پارامترهای دیگر ببینید:
به عنوان یک نمونه این بار، ما پارامترهای انتشار ClickOnce در هر اشکال زدایی و انتشار ساخت را تغییر دهید، بنابراین ما آن را به صورت زیر ایجاد کنید.
منتشر شده توسط ClickOnceDebug.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\\"
ClickOnceRelease منتشر شده .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\\"
ClickOnce انتشار BAT اجرای فایل
سعی کنید هر فایل BAT را اجرا کنید.
اعلان فرمان راه اندازی می شود و ساخت شروع می شود.
در واقع، فایل BAT ایجاد شده در این زمان تنها یک فرایند تا زمان ساخت است، بنابراین فایل در "مکان پوشه عمومی" ایجاد نشده است. پرونده های لازم برای انتشار ایجاد شده اند. به عنوان مثال، در مورد ساخت اشکال زدایی، شما باید یک فایل در "< مسیر پوشه پروژه >\bin\Debug\app.publish\" داشته باشید. کپی کردن این فایل ها را به "آدرس پوشه نصب" و آن را به درستی به عنوان 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
اسميه که قبلا بهت دادم
ClickOnceDebug منتشر می کند.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، اما غیر ضروری است زیرا در اصل در setup گنجانده شده است.exe.
- مکمل
-
اگر پروژه های متعددی در راه حل وجود دارد، برای تمام پروژه
CopyPublishedApplication
ها اجرا می شود. در بیشتر موارد، آن را تنها به پروژه exe تنظیم شده است، بنابراین یک خطا در هنگام اجرا در یک پروژه دیگر نمایشCopyPublishedApplication
داده خواهد شد، نادیده گرفتن آن بی خطر است زیرا تنها یک پیام را نمایش می دهد.
انتشار به یک مکان پوشه عمومی (برای FTP)
من آن را امتحان نکرده ام، اما ممکن است بخواهید به سایت های زیر مراجعه کنید.
چیزهای دیگر را به خاطر داشته باشید
- حتی اگر صدور ClickOnce را به چند قسمت تقسیم کنید، با نهاد به عنوان همان برنامه برخورد می شود، بنابراین به عنوان مثال، شما نمی توانید برنامه ای را که در Debug منتشر شده و برنامه ای که با Release در همان محیط منتشر شده است، نصب کنید. برای نصب لازم است اقداماتی مانند تغییر نام هر مجمع انجام شود. لطفا به سایت زیر مراجعه کنید تا ببینید چه چیزی توسط آن شناسایی شده است.