سؤال

عند I إلغاء خدمتي أحصل على خطأ حيث تقول لدي لوقف مثل هذه وهذه الخدمة قبل إلغاء تثبيت. هذا غير مرضية - إلغاء التثبيت يجب أن تتوقف تلقائيا

.

ولقد وجدت بلوق أو أخبار نشرها على هذا منذ أشهر وحصلت على العمل بشكل صحيح، ولكن الآن وقد توقف العمل بالنسبة لي. وليس لدي رابط لآخر ... ربما شخص آخر يعرف أين هو؟ :) أعتقد أنني غيرت بعض الشيء خفية وأنها توقفت عن العمل. أجد WIX صعبة للغاية لاستكشاف.

وأنا باستخدام التالية تشمل لجلب الملكية X_ WIN_ SERVICE_ اسم (آسف أنا لا أعرف كيف لتجنب _ الهروب هنا) من التسجيل. أنه لم يتم تثبيت الموضوع على أنه في هذه الحالة أنا صراحة تعيينها مع ملف الإدخال. يشمل هذا يستخدم من قبل أي مكون من مكونات في ملف wxs بلدي.

<Include xmlns="http://schemas.microsoft.com/wix/2006/wi">

<?ifndef SetupXWinServiceRegistryProperties ?>
<?define SetupXWinServiceRegistryProperties ?>

<?define XWinServiceRegistryKey='Software\X\Y'?>

<Property Id="X_WIN_SERVICE_NAME">
  <RegistrySearch Id="XWinServiceNameSearch"
                    Root="HKLM"
                    Key="$(var.XWinServiceRegistryKey)"
                    Name="ServiceName"
                    Type="raw"/>
</Property>

<?endif?>
</Include>

ويستخدم المكون التالية تشمل لحفظ القيمة التسجيل على تثبيت:

<Include xmlns="http://schemas.microsoft.com/wix/2006/wi">

<?ifndef WriteXWinServiceRegistryProperties ?>
<?define WriteXWinServiceRegistryProperties ?>

<Component Id="CompWriteXWinServiceRegistryProps"
  Guid="some guid">

<!-- Write properties to the registry. Then they will be 
       accessable during uninstall. -->

<RegistryValue Root="HKLM"
   Key="$(var.XWinServiceRegistryKey)"
   Name="ServiceName"
   Type="string"
   Value="[X_WIN_SERVICE_NAME]"
   Action="write" />

</Component>

<?endif?>

</Include>

ولقد راجعت نظام بلدي بعد تركيب وكتب قيمة التسجيل بشكل صحيح هناك. الجزء في عنصر بلدي حيث الخدمة الإعداد يشبه:

          <ServiceInstall Id="ServiceInstallXWinService"
                          Name="[X_WIN_SERVICE_NAME]"
                          Start="auto"
                          DisplayName="xxx"
                          Description="yyy"
                          Account="[X_WIN_SERVICE_USER]"
                          Password="[X_WIN_SERVICE_PASSWORD]"
                          Type="ownProcess"
                          ErrorControl="normal"
                          Vital="yes" />

          <ServiceControl Id="ServiceInstallXWinService" 
                          Name="[X_WIN_SERVICE_NAME]"
                          Stop="both"
                          Remove="uninstall"
                          Wait="yes" />

وأي أفكار؟

هل كانت مفيدة؟

المحلول

هل أنت متأكد من أن يتم تعيين الخاصية X_WIN_SERVICE_NAME إلى القيمة الصحيحة على إلغاء التثبيت. استخدام ملف سجل مطول للتأكد من أن البحث هو تحديد القيمة بشكل صحيح. كل شيء تبدو على ما يرام (على الرغم من أنني لا أعرف لماذا كنت وضعت كل شيء في تضمين الملفات بدلا من مجرد استخدام أجزاء).

مرخصة بموجب: CC-BY-SA مع الإسناد
لا تنتمي إلى StackOverflow
scroll top