2016-12-13 29 views
0

私たちはWixベースのmsiとInstall shieldベースのMsiを持っています。 wixベースのmsiの場合、Wxsファイルで製品コードを変更しているので、製品コードが必要に応じて変更されます。powershellを使用してmsiの製品コードを変更するにはどうすればよいですか?

しかし、installshield msiの場合、私はそうすることができませんでした。私はIscmdbld.exeを調べて製品コードを変更するオプションを探しましたが、何の助けもありませんでした。

Wix 4.0 'WixToolset.Dtf.WindowsInstaller.dll'の使用についてのブログもあります。しかし、私はWix 3.10.3でこのアセンブリを見つけることはできません。

powershellを使用して製品コードを更新する方法はありますか?

+0

[オルカ](https://msdn.microsoft.com/en-us/library/windows/desktop/aa370557:
ここ
は、MSI製品コードを変更するスクリプトです(v = vs.85).aspx)for。 – BenH

+1

製品コードを変更することで何を得ようとしていますか? –

答えて

2

このライブラリはWiX 3.10.3でMicrosoft.Deployment.WindowsInstaller.dllを呼び出します。
これは、で、PowerShellとWiXライブラリの助けを借りてMSIを編集する方法を示している可能性があります.WixToolset.Dtf.WindowsInstallerの代わりに3.10.3のMicrosoft.Deployment.WindowsInstallerを使用してください。あなたが使用することができ、何かのように聞こえる

#Copy dll from WiX binary files (version 3.10.3) 

# Add Required Type Libraries 
Add-Type -Path "C:\Temp\Microsoft.Deployment.WindowsInstaller.dll" 

# Open an MSI Database 
$oDatabase = New-Object Microsoft.Deployment.WindowsInstaller.Database("C:\Temp\Bliss_LP_net.msi", [Microsoft.Deployment.WindowsInstaller.DatabaseOpenMode]::Direct); 

#Create a Select Query against an individual property 
$sSQLQuery = "SELECT * FROM Property WHERE Property= 'ProductCode'" 

#Create and Execute a View object 
[Microsoft.Deployment.WindowsInstaller.View]$oView = $oDatabase.OpenView($sSQLQuery) 
$oView.Execute() 

#Fetch the Result 
$oRecord = $oView.Fetch() 
$sProductCode = $oRecord.GetString(2) 

#Display Retrieved Field 
"ProductCode = $($sProductCode)" 

#Generate new random guid 
$newProductCode = "{$((New-Guid).guid)}" 
"newProductCode = $($newProductCode)" 

$oRecord.SetString("Value",$newProductCode) 
$oView.Modify([Microsoft.Deployment.WindowsInstaller.ViewModifyMode]::Update,$oRecord) 

#Close the Database 
$oView.Close(); 
$oDatabase.Dispose(); 
関連する問題