تغییر تنظیمات 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)

من آن را امتحان نکرده ام، اما ممکن است بخواهید به سایت های زیر مراجعه کنید.

چیزهای دیگر را به خاطر داشته باشید