2017-11-07 12 views
0

私は単純なC#アプリケーションを持っていて、Wixを使ってファイルをインストールするだけでなく、すべてのプログラムフォルダにリンクを追加しようとしています。 msiはすべての正しいディレクトリを作成し、アプリケーションを正常にインストールし、すべてのプログラム(私の会社のフォルダとそのフォルダの下のアプリケーションへのリンク)に良いリンクのように見えるものを追加します。Wix - すべてのプログラムフォルダに追加しようとしています

しかし、すべてのプログラムにアクセスし、私の会社のフォルダへのリンクを展開し、アプリケーションへのリンクをクリックするだけで、新しいWindowsエクスプローラウィンドウが開き、 "C:\"というホームディレクトリの内容が表示されます。

私は間違っていますか?私はWixヘルプサイトのページや他の投稿をここで(何度か)見直し、私が見逃したものは見ていません。

私はすべて「バインド」を使用しています。と "var。"一度これがすべて機能するようになったら、これを多くのリテラルを変更することなく、将来のアプリケーションのテンプレートとして使うことができます。

<?xml version="1.0" encoding="UTF-8"?> 
<Wix xmlns="http://schemas.microsoft.com/wix/2006/wi"> 
    <Product Id="{CE767FBA-D925-4227-887B-34B95CDE390F}" Name="Application Settings Editor" Language="1033" Version="1.0.0.0" 
     Manufacturer="My Company Name" UpgradeCode="{8DC42ABA-F73D-4113-9BFD-0766B4124FD1}"> 
    <Package InstallerVersion="300" Compressed="yes" InstallScope="perMachine"/> 
    <Media Id="1" Cabinet="myapplication.cab" EmbedCab="yes" /> 

    <Directory Id="TARGETDIR" Name="SourceDir"> 
     <Directory Id="ProgramFilesFolder"> 
     <Directory Id="MANUFACTURERFOLDER" Name="!(bind.property.Manufacturer)" > 
      <Directory Id="APPLICATIONROOTDIRECTORY" Name="!(bind.property.ProductName)"/> 
     </Directory> 
     </Directory> 
     <!-- Step 1: Define the directory structure --> 
     <Directory Id="ProgramMenuFolder"> 
     <Directory Id="CompanyFolder" Name="!(bind.property.Manufacturer)"> 
      <Directory Id="AppFolder" Name="!(bind.property.ProductName)"/> 
     </Directory> 
     </Directory> 
    </Directory> 

    <DirectoryRef Id="APPLICATIONROOTDIRECTORY"> 
     <Component Id="$(var.Application_Settings_Editor.TargetFileName)" Guid="{8DC42ABA-F73D-4113-9BFD-0766B4124FD1}"> 
     <File Id="$(var.Application_Settings_Editor.TargetFileName)" Source="..\Application Settings Editor\bin\Debug\Application_Settings_Editor.exe" KeyPath="yes" Checksum="yes"/> 
     </Component> 
    </DirectoryRef> 

    <!-- Step 2: Add the shortcut to your installer package --> 
    <DirectoryRef Id="AppFolder"> 
     <Component Id="AppStartMenu" Guid="{2781BD2D-5F30-4D2A-BBAE-D2B64EB30A75}"> 
     <Shortcut Id="AppStartMenuShortcut" 
      Name="!(bind.property.ProductName)" 
      Description="General Application Settings Editor" 
      Target="[INSTALLFOLDER]\[$(var.Application_Settings_Editor.TargetFileName)]" 
      WorkingDirectory="APPLICATIONROOTDIRECTORY"/> 
     <RemoveFolder Id="RemoveCompanyFolder" Directory="CompanyFolder" On="uninstall"/> 
     <RemoveFolder Id="RemoveAppFolder" Directory="AppFolder" On="uninstall"/> 
     <RegistryValue Root="HKCU" Key="Software\!(bind.property.Manufacturer)\!(bind.property.ProductName)" Name="installed" Type="integer" Value="1" KeyPath="yes"/> 
     </Component> 
    </DirectoryRef> 

    <Feature Id="MainApplication" Title="Main Application" Level="1"> 
     <ComponentRef Id="$(var.Application_Settings_Editor.TargetFileName)" /> 
     <ComponentRef Id="AppStartMenu" /> 
    </Feature> 
    </Product> 
</Wix> 

答えて

1

"INSTALLFOLDER"というIDのディレクトリがないため、ショートカットのターゲットが正しくないように見えます。 [INSTALLFOLDER]の代わりに[APPLICATIONROOTDIRECTORY]を試してください。

<Shortcut Id="AppStartMenuShortcut" 
     Name="!(bind.property.ProductName)" 
     Description="General Application Settings Editor" 
     Target="[APPLICATIONROOTDIRECTORY]\$(var.Application_Settings_Editor.TargetFileName)" 
     WorkingDirectory="APPLICATIONROOTDIRECTORY"/> 
+1

ありがとうございました!それはパスを修正しました。私がここに投げたのは、 "INSTALLFOLDER"というタグを使っていて、私が見ることのできるものはどれも定義されていないので、内部的な "magick"私がする必要があった唯一の他のものは、その行の実行可能ファイル名の角括弧を削除することでした - そうでなければ、それを汎用ファイルとしてインストールし、それを使って起動するものを尋ねられます。 –

+0

@KimCrosser私は、実行可能ファイル名から大括弧を削除する答えを編集しました。フォルダIDはプロパティになります。 "magick値"、[Windowsインストーラで定義されたプロパティ](https://msdn.microsoft.com/en-us/library/windows/desktop/aa370905(v=vs.85)asp) – mcdon

関連する問題