2017-10-13 12 views
1

私のアイデアは、.msiインストールファイルでアンインストールファイルを作成することです。私はここでアンインストーラのショートカットを作成する方法についていくつかの情報を読んでいます:http://wixtoolset.org/documentation/manual/v3/howtos/files_and_registry/create_uninstall_shortcut.htmlしかし、msiビルド後にmake uninstallファイルに関する情報が見つかりませんでした。可能であればどうすればいいのですか?それともcmdスクリプトで行うことは可能でしょうか? mashineから自分のプログラムを自動的にアンインストールするためのスクリプトを書いてください。私のコードは次のとおりです。一般的にはWixはサイレントアンインストールファイルを作成します

<?xml version="1.0" encoding="UTF-8"?> 
<Wix xmlns="http://schemas.microsoft.com/wix/2006/wi" xmlns:util="http://schemas.microsoft.com/wix/UtilExtension"><?define WpfApp1_TargetDir=$(var.WpfApp1.TargetDir)?> 
    <Product Id="*" Name="SetupProject2" Language="1033" Version="1.0.0.0" Manufacturer="Andrejka" UpgradeCode="PUT-GUID-HERE"> 
     <Package InstallerVersion="200" Compressed="yes" InstallScope="perMachine" /> 

    <Property Id="WIXUI_INSTALLDIR" Value="TESTFILEPRODUCTDIR" /> 
    <Property Id="WixShellExecTarget" Value="[#WpfApp1.exe]" /> 
    <CustomAction Id="LaunchApplication" BinaryKey="WixCA" DllEntry="WixShellExec" Impersonate="yes" /> 
    <Property Id="LAUNCH_APP_ON_EXIT" Value="1" /> 

    <InstallExecuteSequence> 
    <Custom Action='LaunchApplication' After='InstallFiles'/> 
    </InstallExecuteSequence> 
    <Property Id="WIXUI_EXITDIALOGOPTIONALCHECKBOX" Value="1" /> 

     <MajorUpgrade DowngradeErrorMessage="A newer version of [ProductName] is already installed." /> 
     <MediaTemplate EmbedCab="yes"/> 
     <Feature Id="ProductFeature" Title="SetupProject2" Level="1"> 
      <ComponentGroupRef Id="ProductComponents" /> 
     </Feature> 
    </Product> 

    <Fragment> 
     <Directory Id="TARGETDIR" Name="SourceDir"> 
     <Directory Id="TESTFILEPRODUCTDIR" Name="SetupProject2"> 
      <Directory Id="ProgramFilesFolder"> 
       <Directory Id="INSTALLFOLDER" Name="SetupProject2" />  
     </Directory> 
      </Directory> 
     </Directory> 
    </Fragment> 

    <Fragment> 
     <ComponentGroup Id="ProductComponents" Directory="INSTALLFOLDER"> 
      <!-- TODO: Remove the comments around this Component element and the ComponentRef below in order to add resources to this installer. --> 
      <!-- <Component Id="ProductComponent"> --> 
       <!-- TODO: Insert files, registry keys, and other resources here. --> 
      <!-- </Component> --> 

      <Component Id="WpfApp1.exe" Guid="*"> 
       <File Id="WpfApp1.exe" Name="WpfApp1.exe" Source="$(var.WpfApp1_TargetDir)WpfApp1.exe" />  
      </Component> 
      <Component Id="WpfApp1.exe.config" Guid="*"> 
       <File Id="WpfApp1.exe.config" Name="WpfApp1.exe.config" Source="$(var.WpfApp1_TargetDir)WpfApp1.exe.config" /> 
      </Component> 
      <Component Id="aws_sdk_net_core_support.dll" Guid="*"> 
       <File Id="aws_sdk_net_core_support.dll" Name="aws-sdk-net-core-support.dll" Source="$(var.WpfApp1_TargetDir)aws-sdk-net-core-support.dll" /> 
      </Component> 
      <Component Id="AWSSDK.Core.dll" Guid="*"> 
       <File Id="AWSSDK.Core.dll" Name="AWSSDK.Core.dll" Source="$(var.WpfApp1_TargetDir)AWSSDK.Core.dll" /> 
      </Component> 
      <Component Id="AWSSDK.SimpleNotificationService.dll" Guid="*"> 
       <File Id="AWSSDK.SimpleNotificationService.dll" Name="AWSSDK.SimpleNotificationService.dll" Source="$(var.WpfApp1_TargetDir)AWSSDK.SimpleNotificationService.dll" /> 
      </Component> 
      <Component Id="MimeSharp.dll" Guid="*"> 
       <File Id="MimeSharp.dll" Name="MimeSharp.dll" Source="$(var.WpfApp1_TargetDir)MimeSharp.dll" /> 
      </Component> 
     </ComponentGroup> 
    </Fragment> 
</Wix> 
+0

ようこそstackoverflow - あなたの質問を理解するのはしばらく時間がかかりましたが、必要なものを手に入れたことがうれしいです。あなたのソースにGUIDを投稿してはいけません。人々はそれらをコピーすることができ、ユニークではなくなりました(これはGUIDの全目的に反する)。これは非常に重要です。あなたがまだ住んでいない場合、私は新しいコンポーネントGUIDを生成するか、または**コンポーネントGUIDを自動的に計算する*に設定するというコンセプトを使用する方が良いでしょう。また、WiXソースを簡素化することもできます(https://stackoverflow.com/questions/24732761/syntax-for-guids-in-wix/24769965#24769965)。 –

+0

Im、thanks thanks for – Andrej

+0

インストーラとアンインストーラはmsiexec(Windowsインストーラ)です。 msiファイルはデータベースで、WiXはそれを構築するためのツールの1つです。 –

答えて

0

あなたは、それが実際には、私は信じているWindowsアプリケーションのためのMicrosoftのロゴ要件の違反で、スタートメニューにアンインストールのショートカットを置くことになっていません。むしろ、プログラムの追加/削除アプレットを使用して、製品を通常の方法でアンインストールする必要があります。

UPDATE:私はこのトピックに関するいくつかのより多くの情報と、この答えを見つけました:ちょうどビルトインされたMSIファイルの特徴、それは明確に、アンインストールされるので、またShortcuts with name "Uninstall <Program Name>" are not displayed in Windows 8/8.1/10

- それは常に自動的に利用可能です積極的にブロックされていない場合(追加/削除プログラムの表示から隠れるアプリケーションなど)アンインストールを適切にサポートするために、WiXソースで余分なことはありません。 Windowsインストーラのガイドラインに従うだけで、「無料」で利用できます。 Uninstalling an MSI file from the command line without using msiexec

何を求めていることは、アンインストールバッチファイルを作成する方法に関するものである場合

、あなたは、この「アンインストール参照」であなたのMSIファイルをアンインストールする方法の茄多を見つけることができます。

MSIの製品コードをお持ちの場合は、以下のコマンドラインを実行してMSIのアンインストールを実行してください(ここに記載されているようにシステムに問い合わせることによって製品コードを見つけることができます:How can I find the product GUID of an installed MSI setup?)自動生成お使いの製品コード):

msiexec.exe /x {your-product-guid} 

またはちょうどこのようなあなたのオリジナルのMSIインストールファイルを参照することでアンインストール:

msiexec.exe /x "c:\filename.msi 

もっとたくさんのために)アンインストールリファレンス(上記のリンク先の回答を参照してください。これに関する情報

関連する問題