سؤال

أنا باستخدام Wix3.أنا بحاجة إلى فتح صفحة ويب عندما يقوم المستخدم إلغاء تثبيت المنتج.
أي أفكار كيف يمكن القيام به ؟

شكرا

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

المحلول

وهنا عينة من قانون نستخدمها، ونحن لا نضع الواقع URL في وقت الترجمة، ولكن خصائص التحديث في MSI بعد بناء حتى هذا قد يبدو قليلا "على هندسيا". نحن نستخدم CA WiXShellExec ويكون شرط إضافي بحيث يتم عرض صفحة ويب فقط خلال إلغاء التثبيت، وليس خلال ترقية رئيسية.

<Fragment>
    <Property Id="MyURL"><![CDATA[http://www.blah.blah.blah/]]></Property>
    <CustomAction Id="SetOpenURL" Property="WixShellExecTarget" Value="[MyURL]" />
    <CustomAction Id="OpenURL" BinaryKey="WixCA" DllEntry="WixShellExec" Impersonate="yes" Return="ignore" />

    <InstallExecuteSequence>
        <!-- Launch webpage during full uninstall, but not upgrade -->
        <Custom Action="SetOpenURL" After="InstallFinalize"><![CDATA[REMOVE ~= "ALL" AND NOT UPGRADINGPRODUCTCODE]]></Custom>
        <Custom Action="OpenURL" After="SetOpenURL"><![CDATA[REMOVE ~= "ALL" AND NOT UPGRADINGPRODUCTCODE]]></Custom>
    </InstallExecuteSequence>
</Fragment>

نصائح أخرى

إضافة هذه العناصر XML في مكان ما تحت عنصر <Product> الخاص بك:

  <CustomAction Id="LaunchBrowser"
        ExeCommand="explorer.exe http://www.google.com"
        Directory="INSTALLDIR"
        Return="asyncNoWait" >
     REMOVE="ALL"
  </CustomAction>

  <InstallExecuteSequence>
     <Custom Action="LaunchBrowser" After="InstallValidate"/>
  </InstallExecuteSequence>

وسوف الشرط REMOVE="ALL" تأكد من يتم تنفيذ الإجراء المخصص فقط إذا كان يتم إزالة المنتج تماما.

ووAfter="InstallValidate" يتأكد أن إجراء مخصص يتم تنفيذ الحق بعد في إزالة الخاصية يصبح قيمة معروفة.

المثال الذي تقدمه FireGiant إطلاق إنترنت لا يعمل بالنسبة لي ولكن كان مصدر إلهام لي في الخروج بلدي الحل على النحو التالي.

الشرط لا تثبيت يعني التثبيت الجديد حين تثبيت ما يعني أنها تؤدي فقط عند تثبيت.

<CustomAction Id="LaunchBrowser" Directory="INSTALLDIR" Return="asyncNoWait" ExeCommand="explorer.exe http://www.google.com/" />
<InstallExecuteSequence>
    <Custom Action="LaunchBrowser" After="InstallFinalize">Installed</Custom>
</InstallExecuteSequence>

وهنا هو ما فعلته لكلا التثبيت وإلغاء التثبيت:

<Product>

...

<CustomAction Id="LaunchBrowserInstall" Directory="TARGETDIR" Execute="immediate" Impersonate="yes" Return="asyncNoWait" ExeCommand="explorer.exe https://www.example.com/post_install/" />

    <CustomAction Id="LaunchBrowserUninstall" Directory="TARGETDIR" Execute="immediate" Impersonate="yes" Return="asyncNoWait" ExeCommand="explorer.exe https://www.example.com/post_uninstall/" />

    <InstallExecuteSequence>
        <Custom Action="LaunchBrowserInstall" After="InstallFinalize">NOT Installed AND NOT REMOVE</Custom>
        <Custom Action="LaunchBrowserUninstall" After="InstallFinalize">REMOVE ~= "ALL"</Custom>
    </InstallExecuteSequence>

...

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